{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## RUL prediction using 1D CNN\n",
    "\n",
    "In this notebook, we will use 1D CNN to predict RUL of NASA's turbofan engine dataset FD003. We will show the implementation without going into the theory of CNN."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import tensorflow as tf\n",
    "from tensorflow.keras import layers\n",
    "from tensorflow.keras.models import Sequential\n",
    "\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import sklearn\n",
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "from sklearn.preprocessing import MinMaxScaler\n",
    "from sklearn.metrics import mean_squared_error\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "np.random.seed(34)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Tensorflow Version:  2.3.0\n",
      "Numpy version:  1.18.5\n",
      "Pandas version:  1.0.5\n",
      "Scikit-learn version:  0.23.1\n"
     ]
    }
   ],
   "source": [
    "print(\"Tensorflow Version: \", tf.__version__)\n",
    "print(\"Numpy version: \", np.__version__)\n",
    "print(\"Pandas version: \", pd.__version__)\n",
    "print(\"Scikit-learn version: \", sklearn.__version__)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Data Preprocessing\n",
    "\n",
    "We strongly encourage readers to go through the [dataset description and prreprocessing notebook](https://github.com/biswajitsahoo1111/rul_codes_open/blob/master/notebooks/cmapss_notebooks/CMAPSS_data_description_and_preprocessing.ipynb). In that notebook we have explained how data preprocessing functions work with simple examples. In this notebook we will only use those functions. So prior familiarity with these functions is an advantage. Below are the parameters that we will use for data preprocessing:\n",
    "\n",
    "* Degradation model: Piecewise linear\n",
    "* Early RUL: 125\n",
    "* Window length: 30\n",
    "* Shift: 1\n",
    "* Data scaling: MinMaxScaling with feature range of [-1, 1]. We will **not** preform individual enginewise scaling. Rather, we will apply the scaling to the full column of training data. Why do we do that? One reason is to achieve to better result. If enginewise scaling is preformed, we achieve higher RMSE value. But if we perform, full dataset scaling, we achieve lower RMSE values (which is better).\n",
    "\n",
    "We will calculate two prediction scores on test data. In one case, we will take last 5 examples of test data for engine, calculate their predictions, and finally average those for each engine. In the second case, we will take only the last example of each engine and make predictions. The logic behind taking last 5 examples and averaging their predictions is to make the prediction robust against outliers. Due to some external factor, if our last example happens to be corrupted, its prediction outcome might be far off from the actual one. But if we average predictions from last 5 examples, we will get a more conservative estimate. \n",
    "\n",
    "In the following cell we will show boxplots of each column of training data. That will give us an idea about the values in different columns. If all the values in a column are constant, we drop those columns from our analysis.\n",
    "\n",
    "Readers can download the data from [here](https://ti.arc.nasa.gov/tech/dash/groups/pcoe/prognostic-data-repository/#turbofan). In the following cells, wherever data are read from a folder, readers should change the string to point to the respective folder from their system to run this notebook seamlessly. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1152x1512 with 21 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "train_data = pd.read_csv(\"/home/biswajit/data/cmapss_data/train_FD003.txt\", sep= \"\\s+\", header = None)\n",
    "plt.figure(figsize = (16, 21))\n",
    "for i in range(21):\n",
    "    temp_data = train_data.iloc[:,i+5]\n",
    "    plt.subplot(7,3,i+1)\n",
    "    plt.boxplot(temp_data)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "def process_targets(data_length, early_rul = None):\n",
    "    \"\"\" \n",
    "    Takes datalength and earlyrul as input and \n",
    "    creates target rul.\n",
    "    \"\"\"\n",
    "    if early_rul == None:\n",
    "        return np.arange(data_length-1, -1, -1)\n",
    "    else:\n",
    "        early_rul_duration = data_length - early_rul\n",
    "        if early_rul_duration <= 0:\n",
    "            return np.arange(data_length-1, -1, -1)\n",
    "        else:\n",
    "            return np.append(early_rul*np.ones(shape = (early_rul_duration,)), np.arange(early_rul-1, -1, -1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "def process_input_data_with_targets(input_data, target_data = None, window_length = 1, shift = 1):\n",
    "    \"\"\"Depending on values of window_length and shift, this function generates batchs of data and targets \n",
    "    from input_data and target_data.\n",
    "    \n",
    "    Number of batches = np.floor((len(input_data) - window_length)/shift) + 1\n",
    "    \n",
    "    **We don't check input dimensions uisng exception handling. So readers should be careful while using these\n",
    "    functions. If input data are not of desired dimension, either error occurs or something undesirable is \n",
    "    produced as output.**\n",
    "    \n",
    "    Arguments:\n",
    "        input_data: input data to function (Must be 2 dimensional)\n",
    "        target_data: input rul values (Must be 1D array)s\n",
    "        window_length: window length of data\n",
    "        shift: Distance by which the window moves for next batch. This is closely related to overlap\n",
    "               between data. For example, if window length is 30 and shift is 1, there is an overlap of \n",
    "               29 data points between two consecutive batches.\n",
    "        \n",
    "    \"\"\"\n",
    "    num_batches = np.int(np.floor((len(input_data) - window_length)/shift)) + 1\n",
    "    num_features = input_data.shape[1]\n",
    "    output_data = np.repeat(np.nan, repeats = num_batches * window_length * num_features).reshape(num_batches, window_length,\n",
    "                                                                                                  num_features)\n",
    "    if target_data is None:\n",
    "        for batch in range(num_batches):\n",
    "            output_data[batch,:,:] = input_data[(0+shift*batch):(0+shift*batch+window_length),:]\n",
    "        return output_data\n",
    "    else:\n",
    "        output_targets = np.repeat(np.nan, repeats = num_batches)\n",
    "        for batch in range(num_batches):\n",
    "            output_data[batch,:,:] = input_data[(0+shift*batch):(0+shift*batch+window_length),:]\n",
    "            output_targets[batch] = target_data[(shift*batch + (window_length-1))]\n",
    "        return output_data, output_targets"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "def process_test_data(test_data_for_an_engine, window_length, shift, num_test_windows = 1):\n",
    "    \"\"\" This function takes test data for an engine as first input. The next two inputs\n",
    "    window_length and shift are same as other functins. \n",
    "    \n",
    "    Finally it takes num_test_windows as the last input. num_test_windows sets how many examplles we\n",
    "    want from test data (from last). By default it extracts only the last example.\n",
    "    \n",
    "    The function return last examples and number of last examples (a scaler) as output. \n",
    "    We need the second output later. If we are extracting more than 1 last examples, we have to \n",
    "    average their prediction results. The second scaler halps us do just that.\n",
    "    \"\"\"\n",
    "    max_num_test_batches = np.int(np.floor((len(test_data_for_an_engine) - window_length)/shift)) + 1\n",
    "    if max_num_test_batches < num_test_windows:\n",
    "        required_len = (max_num_test_batches -1)* shift + window_length\n",
    "        batched_test_data_for_an_engine = process_input_data_with_targets(test_data_for_an_engine[-required_len:, :],\n",
    "                                                                          target_data = None,\n",
    "                                                                          window_length = window_length, shift = shift)\n",
    "        return batched_test_data_for_an_engine, max_num_test_batches\n",
    "    else:\n",
    "        required_len = (num_test_windows - 1) * shift + window_length\n",
    "        batched_test_data_for_an_engine = process_input_data_with_targets(test_data_for_an_engine[-required_len:, :],\n",
    "                                                                          target_data = None,\n",
    "                                                                          window_length = window_length, shift = shift)\n",
    "        return batched_test_data_for_an_engine, num_test_windows"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In the following cell, we will apply `MinMaxScaling` to the full trianing dataset."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Processed trianing data shape:  (21820, 30, 15)\n",
      "Processed training ruls shape:  (21820,)\n",
      "Processed test data shape:  (500, 30, 15)\n",
      "True RUL shape:  (100,)\n"
     ]
    }
   ],
   "source": [
    "test_data = pd.read_csv(\"/home/biswajit/data/cmapss_data/test_FD003.txt\", sep = \"\\s+\", header = None)\n",
    "true_rul = pd.read_csv(\"/home/biswajit/data/cmapss_data/RUL_FD003.txt\", sep = '\\s+', header = None)\n",
    "\n",
    "window_length = 30\n",
    "shift = 1\n",
    "early_rul = 125            \n",
    "processed_train_data = []\n",
    "processed_train_targets = []\n",
    "\n",
    "# How many test windows to take for each engine. If set to 1 (this is the default), only last window of test data for \n",
    "# each engine is taken. If set to a different number, that many windows from last are taken. \n",
    "# Final output is the average output of all windows.\n",
    "num_test_windows = 5     \n",
    "processed_test_data = []\n",
    "num_test_windows_list = []\n",
    "\n",
    "columns_to_be_dropped = [0,1,2,3,4,5,9,14,20,22,23]\n",
    "\n",
    "train_data_first_column = train_data[0]\n",
    "test_data_first_column = test_data[0]\n",
    "\n",
    "# Scale data for all engines\n",
    "scaler = MinMaxScaler(feature_range = (-1,1))\n",
    "train_data = scaler.fit_transform(train_data.drop(columns = columns_to_be_dropped))\n",
    "test_data = scaler.transform(test_data.drop(columns = columns_to_be_dropped))\n",
    "\n",
    "train_data = pd.DataFrame(data = np.c_[train_data_first_column, train_data])\n",
    "test_data = pd.DataFrame(data = np.c_[test_data_first_column, test_data])\n",
    "\n",
    "num_train_machines = len(train_data[0].unique())\n",
    "num_test_machines = len(test_data[0].unique())\n",
    "\n",
    "# Process training and test data sepeartely as number of engines in training and test set may be different.\n",
    "# As we are doing scaling for full dataset, we are not bothered by different number of engines in training and test set.\n",
    "\n",
    "# Process trianing data\n",
    "for i in np.arange(1, num_train_machines + 1):\n",
    "    temp_train_data = train_data[train_data[0] == i].drop(columns = [0]).values\n",
    "    \n",
    "    # Verify if data of given window length can be extracted from training data\n",
    "    if (len(temp_train_data) < window_length):\n",
    "        print(\"Train engine {} doesn't have enough data for window_length of {}\".format(i, window_length))\n",
    "        raise AssertionError(\"Window length is larger than number of data points for some engines. \"\n",
    "                             \"Try decreasing window length.\")\n",
    "        \n",
    "    temp_train_targets = process_targets(data_length = temp_train_data.shape[0], early_rul = early_rul)\n",
    "    data_for_a_machine, targets_for_a_machine = process_input_data_with_targets(temp_train_data, temp_train_targets, \n",
    "                                                                                window_length = window_length, shift = shift)\n",
    "    \n",
    "    processed_train_data.append(data_for_a_machine)\n",
    "    processed_train_targets.append(targets_for_a_machine)\n",
    "\n",
    "processed_train_data = np.concatenate(processed_train_data)\n",
    "processed_train_targets = np.concatenate(processed_train_targets)\n",
    "\n",
    "# Process test data\n",
    "for i in np.arange(1, num_test_machines + 1):\n",
    "    temp_test_data = test_data[test_data[0] == i].drop(columns = [0]).values\n",
    "    \n",
    "    # Verify if data of given window length can be extracted from test data\n",
    "    if (len(temp_test_data) < window_length):\n",
    "        print(\"Test engine {} doesn't have enough data for window_length of {}\".format(i, window_length))\n",
    "        raise AssertionError(\"Window length is larger than number of data points for some engines. \"\n",
    "                             \"Try decreasing window length.\")\n",
    "    \n",
    "    # Prepare test data\n",
    "    test_data_for_an_engine, num_windows = process_test_data(temp_test_data, window_length = window_length, shift = shift,\n",
    "                                                             num_test_windows = num_test_windows)\n",
    "    \n",
    "    processed_test_data.append(test_data_for_an_engine)\n",
    "    num_test_windows_list.append(num_windows)\n",
    "\n",
    "processed_test_data = np.concatenate(processed_test_data)\n",
    "true_rul = true_rul[0].values\n",
    "\n",
    "# Shuffle training data\n",
    "index = np.random.permutation(len(processed_train_targets))\n",
    "processed_train_data, processed_train_targets = processed_train_data[index], processed_train_targets[index]\n",
    "\n",
    "print(\"Processed trianing data shape: \", processed_train_data.shape)\n",
    "print(\"Processed training ruls shape: \", processed_train_targets.shape)\n",
    "print(\"Processed test data shape: \", processed_test_data.shape)\n",
    "print(\"True RUL shape: \", true_rul.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Training and validation split\n",
    "\n",
    "We will take 20% of training data (sampled randomly) as our validation set. We will monitor the training of our model using the validation set."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Processed train data shape:  (17456, 30, 15)\n",
      "Processed validation data shape:  (4364, 30, 15)\n",
      "Processed train targets shape:  (17456,)\n",
      "Processed validation targets shape:  (4364,)\n"
     ]
    }
   ],
   "source": [
    "processed_train_data, processed_val_data, processed_train_targets, processed_val_targets = train_test_split(processed_train_data,\n",
    "                                                                                                            processed_train_targets,\n",
    "                                                                                                            test_size = 0.2,\n",
    "                                                                                                            random_state = 83)\n",
    "print(\"Processed train data shape: \", processed_train_data.shape)\n",
    "print(\"Processed validation data shape: \", processed_val_data.shape)\n",
    "print(\"Processed train targets shape: \", processed_train_targets.shape)\n",
    "print(\"Processed validation targets shape: \", processed_val_targets.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1D CNN model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "def create_compiled_model():\n",
    "    model = Sequential([\n",
    "        layers.Conv1D(256, 7, activation = \"relu\", input_shape = (window_length, processed_train_data.shape[2])),\n",
    "        layers.Conv1D(96, 7, activation = \"relu\"),\n",
    "        layers.Conv1D(32, 7, activation = \"relu\"),\n",
    "        layers.GlobalAveragePooling1D(),\n",
    "        layers.Dense(64, activation = \"relu\"),\n",
    "        layers.Dense(128, activation = \"relu\"),\n",
    "        layers.Dense(1)\n",
    "    ])\n",
    "    model.compile(loss = \"mse\", optimizer = tf.keras.optimizers.Adam(learning_rate=0.01))\n",
    "    return model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "def scheduler(epoch):\n",
    "    if epoch < 10:\n",
    "        return 0.001\n",
    "    else:\n",
    "        return 0.0001"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "callback = tf.keras.callbacks.LearningRateScheduler(scheduler, verbose = 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Epoch 00001: LearningRateScheduler reducing learning rate to 0.001.\n",
      "Epoch 1/20\n",
      "273/273 - 2s - loss: 766.6738 - val_loss: 380.7329\n",
      "\n",
      "Epoch 00002: LearningRateScheduler reducing learning rate to 0.001.\n",
      "Epoch 2/20\n",
      "273/273 - 2s - loss: 364.8807 - val_loss: 341.6009\n",
      "\n",
      "Epoch 00003: LearningRateScheduler reducing learning rate to 0.001.\n",
      "Epoch 3/20\n",
      "273/273 - 2s - loss: 326.2774 - val_loss: 325.2730\n",
      "\n",
      "Epoch 00004: LearningRateScheduler reducing learning rate to 0.001.\n",
      "Epoch 4/20\n",
      "273/273 - 2s - loss: 285.2940 - val_loss: 241.7049\n",
      "\n",
      "Epoch 00005: LearningRateScheduler reducing learning rate to 0.001.\n",
      "Epoch 5/20\n",
      "273/273 - 2s - loss: 240.9526 - val_loss: 212.8324\n",
      "\n",
      "Epoch 00006: LearningRateScheduler reducing learning rate to 0.001.\n",
      "Epoch 6/20\n",
      "273/273 - 2s - loss: 206.9043 - val_loss: 185.5333\n",
      "\n",
      "Epoch 00007: LearningRateScheduler reducing learning rate to 0.001.\n",
      "Epoch 7/20\n",
      "273/273 - 2s - loss: 187.6843 - val_loss: 190.4177\n",
      "\n",
      "Epoch 00008: LearningRateScheduler reducing learning rate to 0.001.\n",
      "Epoch 8/20\n",
      "273/273 - 2s - loss: 191.9064 - val_loss: 167.2561\n",
      "\n",
      "Epoch 00009: LearningRateScheduler reducing learning rate to 0.001.\n",
      "Epoch 9/20\n",
      "273/273 - 2s - loss: 178.3019 - val_loss: 174.5181\n",
      "\n",
      "Epoch 00010: LearningRateScheduler reducing learning rate to 0.001.\n",
      "Epoch 10/20\n",
      "273/273 - 2s - loss: 169.5631 - val_loss: 161.1039\n",
      "\n",
      "Epoch 00011: LearningRateScheduler reducing learning rate to 0.0001.\n",
      "Epoch 11/20\n",
      "273/273 - 2s - loss: 144.3434 - val_loss: 142.0191\n",
      "\n",
      "Epoch 00012: LearningRateScheduler reducing learning rate to 0.0001.\n",
      "Epoch 12/20\n",
      "273/273 - 2s - loss: 141.7751 - val_loss: 140.7371\n",
      "\n",
      "Epoch 00013: LearningRateScheduler reducing learning rate to 0.0001.\n",
      "Epoch 13/20\n",
      "273/273 - 2s - loss: 140.4658 - val_loss: 142.1316\n",
      "\n",
      "Epoch 00014: LearningRateScheduler reducing learning rate to 0.0001.\n",
      "Epoch 14/20\n",
      "273/273 - 2s - loss: 139.2568 - val_loss: 138.6367\n",
      "\n",
      "Epoch 00015: LearningRateScheduler reducing learning rate to 0.0001.\n",
      "Epoch 15/20\n",
      "273/273 - 2s - loss: 138.1727 - val_loss: 137.2094\n",
      "\n",
      "Epoch 00016: LearningRateScheduler reducing learning rate to 0.0001.\n",
      "Epoch 16/20\n",
      "273/273 - 2s - loss: 137.1324 - val_loss: 136.3068\n",
      "\n",
      "Epoch 00017: LearningRateScheduler reducing learning rate to 0.0001.\n",
      "Epoch 17/20\n",
      "273/273 - 2s - loss: 135.7521 - val_loss: 134.5492\n",
      "\n",
      "Epoch 00018: LearningRateScheduler reducing learning rate to 0.0001.\n",
      "Epoch 18/20\n",
      "273/273 - 2s - loss: 135.0171 - val_loss: 139.2789\n",
      "\n",
      "Epoch 00019: LearningRateScheduler reducing learning rate to 0.0001.\n",
      "Epoch 19/20\n",
      "273/273 - 2s - loss: 135.3625 - val_loss: 133.4285\n",
      "\n",
      "Epoch 00020: LearningRateScheduler reducing learning rate to 0.0001.\n",
      "Epoch 20/20\n",
      "273/273 - 2s - loss: 132.1009 - val_loss: 131.4294\n"
     ]
    }
   ],
   "source": [
    "model = create_compiled_model()\n",
    "history = model.fit(processed_train_data, processed_train_targets, epochs = 20,\n",
    "                    validation_data = (processed_val_data, processed_val_targets),\n",
    "                    callbacks = callback,\n",
    "                    batch_size = 64, verbose = 2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Why did we run the model only for 20 epochs, even though the validation loss seems to be decreasing? Well, while training this model for more epochs, we previously observed that it is possible to decrease the validation loss to a very small number. But in that case, our actual test loss is not that great. This is because our model is overfitting the validation dataset. So to get a good test performance, we should stop our training at an intermediate value of the validation loss. We chose 10 epochs as that gives a good enough test error. It has been empirically obaserved (for this case) that we get good test loss when validation loss is close to 100. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "RMSE:  15.781104674715799\n"
     ]
    }
   ],
   "source": [
    "rul_pred = model.predict(processed_test_data).reshape(-1)\n",
    "preds_for_each_engine = np.split(rul_pred, np.cumsum(num_test_windows_list)[:-1])\n",
    "mean_pred_for_each_engine = [np.average(ruls_for_each_engine, weights = np.repeat(1/num_windows, num_windows)) \n",
    "                             for ruls_for_each_engine, num_windows in zip(preds_for_each_engine, num_test_windows_list)]\n",
    "RMSE = np.sqrt(mean_squared_error(true_rul, mean_pred_for_each_engine))\n",
    "print(\"RMSE: \", RMSE)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Save the model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "tf.keras.models.save_model(model, \"FD003_1D_CNN_piecewise_RMSE_\"+ str(np.round(RMSE, 4)) + \".h5\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We will now compute the RMSE by taking only last example of each engine."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "RMSE (Taking only last examples):  14.835023142045685\n"
     ]
    }
   ],
   "source": [
    "indices_of_last_examples = np.cumsum(num_test_windows_list) - 1\n",
    "preds_for_last_example = np.concatenate(preds_for_each_engine)[indices_of_last_examples]\n",
    "\n",
    "RMSE_new = np.sqrt(mean_squared_error(true_rul, preds_for_last_example))\n",
    "print(\"RMSE (Taking only last examples): \", RMSE_new)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "If you are not convinced by above calculations, take a look at the last section of [this notebook](https://github.com/biswajitsahoo1111/rul_codes_open/blob/master/notebooks/cmapss_notebooks/CMAPSS_FD001_xgboost_piecewise_linear_degradation_model.ipynb)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "For CMAPSS data, along with RMSE another metric (S-score) is usually reported in literature. S-score is defined as:\n",
    "\n",
    "$$S= \\sum_{i=1}^N{s_i}$$\n",
    "\n",
    "where, \n",
    "\n",
    "$$\n",
    "\\begin{equation}\n",
    "    s_i=\n",
    "    \\begin{cases}\n",
    "      (e^{-\\frac{d_i}{13}})-1, & \\text{for}\\ d_i < 1 \\\\\n",
    "      (e^{\\frac{d_i}{10}})-1, & \\text{for}\\ d_i \\geq 1\\\\\n",
    "    \\end{cases}\n",
    "  \\end{equation}\n",
    "  $$\n",
    "  \n",
    "We can compute the S-metric as follows."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "def compute_s_score(rul_true, rul_pred):\n",
    "    \"\"\"\n",
    "    Both rul_true and rul_pred should be 1D numpy arrays.\n",
    "    \"\"\"\n",
    "    diff = rul_pred - rul_true\n",
    "    return np.sum(np.where(diff < 0, np.exp(-diff/13)-1, np.exp(diff/10)-1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "S-score:  515.6783533285607\n"
     ]
    }
   ],
   "source": [
    "s_score = compute_s_score(true_rul, preds_for_last_example)\n",
    "print(\"S-score: \", s_score)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAD4CAYAAAAXUaZHAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy86wFpkAAAACXBIWXMAAAsTAAALEwEAmpwYAACf2klEQVR4nO29eZwkR30l/iLvrK7qe+57RudISCMYJIQQAsQhDEawmF1sbGDBllmDsXdtvHjBa/yDxQc2Niw+FtuY+7BlvHjBCLAAywgQjG5pRheS5r6nu6u6q/KozPj9ERGZkVmZVVlHT/f01Pt85tPT1XVEZUa+fPHiexBKKYYYYoghhlhZUJZ6AEMMMcQQQwweQ3IfYoghhliBGJL7EEMMMcQKxJDchxhiiCFWIIbkPsQQQwyxAqEt9QAAYHp6mm7dunWphzHEEEMMcU7h7rvvPkUpXZX1t2VB7lu3bsWePXuWehhDDDHEEOcUCCH78/42tGWGGGKIIVYghuQ+xBBDDLECMST3IYYYYogViGXhuWfB930cOnQIjuMs9VDOSViWhY0bN0LX9aUeyhBDDLEEWLbkfujQIVQqFWzduhWEkKUezjkFSilOnz6NQ4cOYdu2bUs9nCGGGGIJsGxtGcdxMDU1NST2HkAIwdTU1HDVM8QQ5zGWLbkDGBJ7HxgeuyGGOL+xrMl9iBWMBx8EvvOdpR7FEOcSggD4xCeAZnOpR3JOYNl67kuN06dP48YbbwQAHDt2DKqqYtUqlgj2ox/9CIZh9P0ZL3jBC3D06FFYlgXDMPDXf/3X2LVrFwCgXC5jfn4+eu4nP/lJ7NmzBx/72Mfwvve9D+VyGb/5m7/Z9xgSoBQ4W4r/He8ATpwA9u07O583xLmPu+4C3vpWYNMm4CUvWerRLHsMlXsOpqamcN999+G+++7D2972NvzX//pfo98Nw0BzQOrhc5/7HO6//378yq/8Ct71rncN5D17wo9+BFQqwJEji/9ZtRrwgx8Arrv4nzXEyoHYQ5qd7e31L3kJ8N73Dmw4yx1D5d4F3vzmN8OyLNx777247rrrMDo6mlDQl19+Ob761a9i69at+OxnP4uPfvSj8DwP11xzDf7iL/4Cqqrmvve1116LD33oQ2frq7TisceAhQXg4YeB9esX97P+7d8A32f/hhiiKISgqlZ7e/0jjwBTU4MbzzLHuUHuv/7rwH33DfY9d+0C/uzPun7ZoUOH8P3vfx+qquJ973tf5nP27duHL33pS7jzzjuh6zp+5Vd+BZ/73Ofwxje+Mfd9b7vtNrz61a/uejwDQ73Ofh46tPif9a1vsZ9D73SIbiDmS63W2+tdF/C8wY1nmaMjuRNCPgHglQBOUEovT/3tNwD8MYBVlNJThIVofATATwGoA3gzpfSewQ976fC6172urQIHgNtvvx133303nv3sZwMAGo0GVq9enfncN7zhDfA8D/Pz87ivww1sUSNgBLkfPrx4nyEgyH2o3IfoBv0qd8c5r+ZcEeX+SQAfA/Bp+UFCyCYALwVwQHr45QAu5P+uAfCX/Gd/6EFhLxZGRkai/2uahjAMo99FXDmlFG9605vw+7//+x3f73Of+xye9axn4V3vehd+9Vd/FV/+8pcBALZtw/O8aOP2zJkzmJ6eHuRXSeJsKfdDh9gmqmEMlfsQ3SEI2M9+lPt5RO4dN1QppXcAOJPxpz8F8FsAqPTYzQA+TRl+CGCcELJuICNdhti6dSvuuYctTO655x489dRTAIAbb7wRt956K06cOAGAEfP+/bmVOUEIwfvf/3788Ic/xCOPPAIAuOGGG/DZz34WAFP+f//3f48XvvCFi/dlzha5/+u/sp833HBeXWhDDAD9KHdKmSVzHtkyPUXLEEJuBnCYUnp/6k8bAByUfj/EH8t6j1sIIXsIIXtOnjzZyzCWHK997Wtx5swZXHbZZfjYxz6Giy66CACwc+dOfOADH8BLX/pSXHHFFXjJS16Co0ePtn0v27bxG7/xG9Gm6kc+8hF8+ctfxq5du/Cc5zwHr3vd6/D85z8/ev4HPvABbNy4MfrXNxoN9nOxbZlvfQtYswa46qqhch+iO/TjuYvIrPNJUFBKO/4DsBXAQ/z/JQB3ARjjvz8NYJr//6sAnie97nYAuzu9/7Oe9Syaxt69e1seG6I7dHUM3/Y2SgFKp6cXb0BBQOmqVZS+4Q2Uvve9lBKyeJ81xMrDpz/N5ugrXtH9a2dn2Wuvvnrw41pCANhDc3i1F+W+A8A2APcTQp4GsBHAPYSQtQAOA9gkPXcjf2yI5Q5hy5w6FccTDxoPPACcPMnijTWNLZWlPYshhmiLoXLvCl2TO6X0QUrpakrpVkrpVjDr5ZmU0mMA/hnAGwnDcwDMUUrb+xFDLA8IcgcWL5FJRMm85CWAKEW8FBeb7w9vKuci+vHch+TeCkLIFwD8AMDFhJBDhJC3tnn6vwB4EsATAP4awK8MZJRDLD5kcl+sTdV//3fg0ktZkpTGA7WWwne/5hrggx88+587RH/oR7mL1eh5tKHaMRSSUvqzHf6+Vfo/BfD2/od1HiEMgYMH2SajZS3dOOp1YHqa2TKLRe6nTwMb+P76Uir3/fsBHtk0xDmEoXLvCsPaMksN12U+9MGDnZ+7mKjXAR7ts2jkvrAAiDyBpVTuvp9d1+bkSfZviOWJoefeFYbkvtSgPE1gbq735IxBoF5nq4fR0cULh5TJfSmVe7OZvTx/85uBW24568MZoiAEufeSaSrI/TyyZYbk3gaqqmLXrl24/PLL8brXvQ512ZfuEm9+85tx6623tj5+yy3YdvPN2PVzP4crn/1s3C6SfMCSpE6dOhX9/t3vfhevfOUrAbASwO94xzt6Hk8L6nWgVGK2yUpX7s1mtnI/cQI4k5WvN8SygDxXuhVCwnMfKvchAJZYdN999+Ghhx6CYRj4q7/6q8TfB1L2l1J86J3vxH233YY/+/Vfx9t++Zf7f89e0Ggwct+48eyQ+1Ir9yxyP8/S05cVZmfj7OU8yNdbt777ULkPkYfrr78eTzzxBL773e/i+uuvx6te9Srs3LkTQRDgXe96F5797GfjiiuuwP/5P/8HAEsOe8c73oGLL74YL37xi6NSBLlYtQrXXn01Dh85sjRhekK5b9y4OLYMpctDuQcBG0seuQ+zZpcGn/wk8LKXJaO20uhHuZ+Hnvs5UfJ3qSv+NptNfP3rX8dNN90EgNWReeihh7Bt2zZ8/OMfx9jYGH784x/DdV1cd911eOlLX4p7770Xjz76KPbu3Yvjx49j586deMtb3tL65sJzVxTctm8fXn3DDcDMzNmvO12vA7bNGnYcPcouJG2A08PzGLEutXIXBJGl4IbKfekwP89EjecxkZGFfpS7bMuczY5jS4ihcm+DRqOBXbt2Yffu3di8eTPe+lYW4n/11Vdj27ZtAIBvfvOb+PSnP41du3bhmmuuwenTp/H444/jjjvuwM/+7M9CVVWsX78eL3rRi3I/510f/Sgu2rULP/dLv4T//sY3RsSTVeJ3Ucr+isYZQrmHIXDs2GA/Q7QM7FW5nzkDfOhD/a9qxOcNlfvygriptru5DkK5UxpXl1zhOCeU+1JV/BWeexpy2V9KKf73//7feNnLXpZ4zr/8y78U+xDuuf/MO9+J//3Xf423vP/9uPuGGwCwVn8zMzNRqd9FK/srioYJcgeYNTOIgmQCCwvsZ6/K/WtfA37rt4AbbwSe+czex9GJ3IfKfWkgzktRcu/VcxefMchV6TLFULn3iZe97GX4y7/8S/h8Uj722GNYWFjA85//fHzpS19CEAQ4evQovvOd72S/gWTLvONXfxUhpfjGt78NgDXQ/sxnPgMACIIAn/3sZxen7K/wOUW0DDD4TdU0uXer3MXF+ZOf9DcOQR5D5b68cLaUe6fPWEEYknuf+MVf/EXs3LkTz3zmM3H55Zfjl3/5l9FsNvGa17wGF154IXbu3Ik3vvGNuPbaa9u/ESEghOC9v/RL+CMelfM7v/M7eOKJJ3DllVfiqquuwgUXXICf//mfj17yyU9+MlH291CvhCyTu1Dri03u3Sp34ZE/+WR/4ziXPPd77gF+8ReBr351qUey+BDHvd3NVd4H6tVzB86biJmVvzbpA/PCJ5bwghe8AC94wQui3xVFwQc/+EF8MKNWycc+9rGOn/HJj3yEZacq7D772pe+FK99zWsAAGNjY/j85z+f+bo3v/nNePOb31zgWxSATO5TU4BpDj5ipl/lLi7ILOX+4x8Du3cX2yTLs2WCgP1bDsr9e98Dfu/34tDARgPg+Q0rFkWV+/g4K5ExVO4dMVTuSw1hywhiUtWzv+Eje+6ELE4i06CUe5rcf/Qj4Oqrge9+t9j75JH7cgqVu/lmVh75D/8Q2LFj8UowLycUJXfLYvO0X8/9PMCQ3JcaaXJXlLMf5y4rd2BxEpkG5bmnbZl772U/pUzetsjz3MXNYzko91oNeMtb2Aby+Hj2/sBKgzjuRWyZSqX3DFVgsLbM3r3Ac5/LkrCWGZY1uVNBfCsZgsgHTO5dHTtB7rbNfp4Fcv/ApzbhF/Dp7pX7gQPJi/Phh9nPoqUh8jx3QaBLTe5hyI6JabLfLWuo3AUEuY+OLh/lfu+9wA9+wKxBCbUa8OpXL35L4nZYtuRuWRZOnz698gleJFQM0JahlOL06dOwipYQTiv3DRuY5z7IY58i93/67jh+gGu799zDkBG8wN697KewljpBVojyTXS52DLiewpyN80huQv0o9xlch+kchfj5Y3tBR58EPjKV5hruFRYthuqIvrjXG2eXRhnzrAEn3372O+izZ2q9vW2lmUVb5ydZct4HhvLqlV9jSOCIPdyGc0m8PBPLKyG0b1yB5jvfsEF7P9CuXdL7gC74MVqZbkodzEOWbnPzS3deM4WikbLqOryUu5ivI8+mnhY3HuWUissW3LXdT3KAl3R+C//BfjHf2QVCQHgV38V+Nznzm51wixyB9iacpDkTghg23hsH+B6CjwY3Sl3QthqQvjuZ87EmbRFbRn5assj96VMT88i9y48969/Hfj2t1ky7zmFbpV7t/0P5NXPIBk3R7kvB3JftrbMeQPXjS9kACiXY5V7tpAm9zVr2M/jxwf3GQsLUTTO/fezh7wulDt1PTRWb2FkJyJmhCUDZCr3T3wio4qCfDORVwMygS5lenqK3F29jKBR3Eb4f/8P+PCHz8FQ7qIZqn147v8Nf4JP4D8vji2Tp9y9pbOVh+S+1EiT+8gIm3xn8+pMk/v4OPs5SDtAqgiZIPeCyv07B3Zg6sReHN10dazc25D7zAzw1rcCX/xi6o3StkzW/5dSbqXI/fm3/y7ec+KdhV/ueWwr4emnF2Fsi4lukph69Nxvxc/gG3jZ4ij3Q4fi+kkA5h9jTeb9fU8M7rO6xJDclxpZyh04u+q9Xmdepog9X2Ryf+AB9lA3yv3p2XE0qI17xl8UK/eHH2bvOTXVYssIrm9xNNK2TNb/l9J3l8g9CIB7zmzBfndd4Ze3y/Va1ljsaBnHgQMLLszF8dwB4LHHov/WHtoPAPBnWhMhzxY6kjsh5BOEkBOEkIekxz5ECHmEEPIAIeSfCCHj0t9+mxDyBCHkUULIyzLfdIgYeeSekR27aBCNOoTPLMh9kLG78/Mtyt2HAeoXI1LHY1N1n7mLMReljNx37mTvm1LuuY13Fkm5B0GL7dobJHI/ehRohiqcQC/8ckHuT3QhGJdFQFq3nrvrdre6dV04sOHAWhxbBkhMgNqTLBBkudsynwRwU+qxbwG4nFJ6BYDHAPw2ABBCdgJ4PYDL+Gv+ghDSX9jHSkef5P5//y8rmNgXRKMOgVKJXUSDJHeu3E+dAo4cASYnWBii7xTzt12P3Xj2NS9g73XyJLNldu5km6Ip5d6O3H8f78a/4sZ8z70H5f7ZzwKXX148lyoXErkLa8UNi8c9dKvc77+f3Rufeqr4EBcF3Sp3oDtrxnXhwBy8chfvpSgJ3712mK16PXcZkzul9A4AZ1KPfZNSKq6AHwIQMXc3A/gipdSllD4F4AkAVw9wvN2jXmclYr///SUdRi48r9VzBwrbMn/4h8Af/VGfYxCNOgQIYep9EchdWDK7n8kmfVFl4/pcuc+uZw/s2cOailx2GRt7F8r9T/Ab+BL+U2/K/QtfAF7+8paH77mHqfe+g5yyyJ0ahTd5uyX3O+5gh05yFJYG3XruQFfkHjg+fBiLo9w1Ddi2LVbup0+jNsfFyzJX7p3wFgBf5//fAECOUTrEH2sBIeQWQsgeQsieRY1lP36cZZEVrT1yttGncvfOzKN6rE9/vl5HaI8k1dvY2OKS+27203OKZeM6PlsA7jsyCgrElRJ37mQrjRxyb+EK34cPnV3kvXju3/secNttLc/pNpcqFxK579/PH4LZsnnw8MPZ3cm6tWUe4mbrzEz3Qx0ouo2WAbry3d0Gm2eL4rlrGnDxxbFyv+su1MBuQOcsuRNC3gOgCeBz3b6WUvpxSuluSunuVYOKpc6CmO3dxsWeLfRL7oeOo3Zwtr8x1Ov4RvNGbN/O4qQBMOW+CBuq99/PIi03bmZTr+iyVSj32aqK41jLYv6AWLl3Ycv40NGA3ZNynz0d4EFc3nJsRA7aIMk9Uu5ozVL9rd8C3vGO1peL6f7UU8WqWPRL7iItoG8ssi0jDp8Da/C2jK4Dl1zClj9hmCT3czHOnRDyZgCvBPAGGtcIOAxgk/S0jfyxpYNE7gcOMKH3T/+0pCNKwnUBw4h/75Lc/UBF1bc7P7Ed6nU8GrCMz3e+k/PLItky998PXHklYJjMQy9M7s14qj4y/TwWejYyAmze3LUtEyl3eXku/7+Ncv+Te1+E5+CH8I7HbFitxhWSzxa512rZU0R8DdftXLVZ7EkDvZ3qH/4Q2LIF+MAHun9tGq5H8AR2tD321G/iG6eehXCE2zJdKHfHZfPNhTl4W0bXmXJvNJiIvOsu1Mzp6M9LhZ7InRByE4DfAvAqSqksmf4ZwOsJISYhZBuACwEsYXUFRCdyYf8p3HwzU1h5TZGWBFlx7gDo/ALe/GaWbdgOPlVRDUbaP6kT6nUcCteDELac/9M/xaKQe9Ou4OGHgSuuiO9nRcndaWpQwHznfeO88cmll7KNrAxbJq9UDPWbaHZS7m0I5uh8GXWM4KG74+cL1Q6cPVvGPTYD71Trysrz4u2TTtbM4cPxAqRb5f7pTwM33MA2x5/8Qf/9dv9u5tW4Ag/AqecvN/YsXIqb7vwd/OvDPDS0G+XOyX1RlLumMeUOsMlw112oWav4n5exLUMI+QKAHwC4mBByiBDyVgAfA1AB8C1CyH2EkL8CAErpwwD+HsBeALcBeDuldGm70XoeKID//Oi7cf/9wMREd2Fii44cW+aJpzV86lPAt77V/uV+qMKlZn9VYet1HG6uwfbtwGteA7z//cAhfdvAyf1RZws8jyv3LsndbWpYZ8+iXAb26VewBy+7jP3swpZpOoy423rubS7+uQY7V3vujh9bDHIP9RS5p5S7c/QMvFOtytXzYp7ptKn60EPx/7s51e97H/CmNwHXXUexHkfgPvp08Rfn4JQ/hgZKaDTy54NYoT5xonvPPaHcB+25C+UOMLtwdhY1ZRzAMlfulNKfpZSuo5TqlNKNlNK/pZReQCndRCndxf+9TXr+/6KU7qCUXkwp/Xq79z4r8Dx8EP8D/+C/Gn/wey5e/OJlluCRQ+7f3zcBoHPJFJ+yMLluE/YSaDRwyF2FjRtZ6noYAu+69+cGR+6eBzSbeGBuC4CUci+4QnYDDZbWxCWXAPu87ezBnTvZzy42VMUGV6/KfdZlBLPnobji5mKQ+/GqDc8DFIVmkrvb1OCGrfHvnsf6e2ha53kuLJk1a4ord0qB//W/gFe9CvjGZ05iAmei/ZB+4PFwT7/Nzd5vMoJ++gQP2y066SmFw8e4KNEyug6sXs1Wu1/4Ahta0+Z/XqIaRTgPMlRPn6L4Hbwf/wlfxLte+yR27GCbTQMtH/L1rzOiueQS9u9lLyv+AWlyNwxA1/H9J1l9l05k4VF2gVfP9JFVWa/jsDOJDRuArVuBd78b+OKjV+Gh+rbBSA8e1nn/6Y3R3lO35O4EOkw1wKWXAvtm1rIHe1DuvsuW/S0XeVHl7jNi2fPYaPTY3r1sRQgMjtyfPsZuHtvWNLKVe6BHhCjDm11A6cG7sG1bMeW+di2wfXtxcvd9du+7+mpAP7IfJly4fv+pLF7A3kOcn8zPDhhd7T/Kb2pFlbvvs/ONRVDugtwJYep9Zga0XMF8g41V3JCWAiue3GdnAQoFr8DXQA4dxAUXsPMx0OCZf/1X4PHHgV27mGf+zW8WV71pcgeAchk/OMhSB4oq9+rx3lmFLtRxuD4RFYMU7TqfxPbBRMxwcn/gxBpceikj9p6Uu97EpZcCh8+UUH3ne4EXvpD9UWyoSmEbhcg9pdz/Gr+Iv8Ob2yv3gK2sHjw8GX3Gvn0slQIYILkfZXPi4s0NNta0cg81Fv+efnnNh/HYQ9ixg3a0Hx96iCVeTUwUn65iGJYF4MABRu7N/mlEEHc7my5S7vsVdp0VVe689AAANKEjcAdYXkJu2s39MPdZz0WTj7VgAvaiYMWTu1tnCtqABxw8iB072OMD9d3n5tiy7ItfBG65hT1WhLUozST3OXstHjrNNo06kUVkyxwvWPI2A6fqJXiBFpG7qD4wgy6u+nbg5P7wsSlcfjl7qGtyD3WYGlPuAPDIG94fZ9WWSuxYSm/WidyzbJm/wS/iU3hTvrKjFHNhBWtwDM1QxQMPsPPz1FODJ/f9R9h5vWirl7mh6oRGtGqT4YUqDOpgxyY/qtKQhTBkKw5B7kWVuziutg1gP1fuzQEod2HLtIkLFzeAp58GS2QqqtxdNyJ3II55HwiEcgci37226/r4z0PlvngQ5G7CBQ4ejHo8DNR3r1bj2FvBWkV2OAWJpMj9LvVaUChQlALKHdyWOdFjtx7fx6GA2RwbeLqZsBgGSe7zGMGBUyORTR6Re0FP0gkNmFoYkbvsc0fhIdLByiV3Th5ZtkwDNjueecq9XscsxnEjbgfAkmRFaPNVV7GnDITcNQ1P71cwPQ1MTgIhVDQXUtEyNIfcAxUGPFywpoZqFTh9Ovtjnn6aHa7LLmM386LkLr6fZUEi9/7bQghyb6fchXVz4gRQL68urtxT5D7QxlYyufPJWdt5TfznJST3ZdusY1AQd2lB7uvXs4k5SOW+58Bq/NGJ/w31ZwHj8A24AO/Fex0XHU9rujEDx/eb10BBgCuvVNuSRRgCAT+F1ZM9hsvU6zjMk4iFch8bYz8HSe6PgC1ZW8m9wOsphUt1TBoBduxg11KC3IWCbzSiO1MvG6p1lNg8yVHuzskaPKzF5XgIq81Z7NkzjslJ9rfLLmOncSDkzmPct24FzBIjNLfmRRcrpezmRKEgCJJNu7xAgwEPOyZOA5jCE08A09OtHyMiZS6/HNi/ny0+w5BFlrZDwpYR5B70SSNhCI+LlLbKPYy/6H7jQlxaVLlLtgywiMr9Fa8A/uZvUNv1gujP3gAsq16x4pW71+DKfWIEOHgQisI2kAap3P/+wHNw65kX4e67ga/euwH/E+/H7OkCZlseuTtX4YqRJ7F6dXvlLl8IPW+o1us4xEsDCeWuqsBYJcAsxgfjuc/PYy8Yq7eSe4EpGARwYcLUKTQNuPDCmNy//33g2X/4WjyOCxLMGiv3JFk0PZGGboE6SXJvwG5bY372MLOXxjGL3eVHsWcPG4eiABddlJlL1T04ue/fzxKEzBFO7vPxDafpU1B+6aZtLS9kyn3HCGu0kjfPRaTMzp1MuYdhMSGcsGWE595FYbNM+D477gC8ArYMAOzXdiwP5S577roOvPWtqDXi4yGP+WxjxZO767DJYmxcHe2iXnDBYJV7taFjtVnFY48BH/h5Vl/Cm89Wf4cOAb/3e8Dzngc89QSPqJHIPQiAH9Yuw3Pte7Mi/BKQKyr2Q+6HsQGqEmLt2vjhiTE6UOW+Fzuha2G059GVLeN5cGDBNBgxX3opI9U77gBe+lJgz1PTeAiXJ22ZeXY8/KPJMo3yDVFYduwXidxzlPvcMXYyxjGL3cb9ePhhZs1s28aU7KDInRqycmdE4S7E59eZc+WnRwgCZuEY8LBdPwhC8sn9oYdYcu/oaGzDFTnV2cq9eEniTEjk7rfZg/HDmK6extbePfd+ckJaBiUpdw5xz1HRhD9U7ouHyJbZtBo4cACgFDt2oO1mU7eouiYqJpsxhs2UlldPku2ZMyxBaMsWRu533gn80//jd3iJ3B9+GKg1S3iu9qOsCL8E/HpMQtXZHpeaXLmvHXcSy/uJSTJwcr94ezMSOd2SuwsTpsFO2KWXsvP38pfH1RrqSN4JnSo7H/IxApLknkiYKeC5zx5n7zk2oWA33YMwZIFRYjUyKHI/oW+A4wjl3kru7mz8IWJlCsQq3oAHq3oCGzbki5iHH0a0uR3tsRTw3SPPnTaAM2cYuWd4/10hodxznhOGUfAAADwdbOxdubsD9MHbkPukOjdU7osJodzNLWsZU87M4IIL2H9b+mv2iKpnYdRis9K0+XJ5IUkqd97Jaq/fcgu74LZtA+78MWc4qbaMqEz83PB7nZW7TO7VHu9UjQYOYSM2rkrKmfEpZeDkvvOS+AYUkXuRDSdO7pbJvuMllzAbYfv2uJZ9A3ZKuTPSSysnWZQ79fiYha4Pp5NyP8UeH19r41nOnQDYfUBs8g6K3PeTrQCYcrcqjDjkVYYzG/sK3nzMhjK549SpSMSk0WyylY9IE4iiowqQe2TLzB4FAJg6zUym6gqycs/bgwmCKHhg3TrgaXddceWe9tzPknKf1KqJ1cbZxoond7H7bm7jdcAHHQ4ZBKgFNkZLTFnlKXdx4b397YyUrrsOuPMei5WvlZT7978PrC3NYavzSEflLn9Gbb5HNcJtmQ2rk+OdmCCYUaYHQu6NWRdPYjt2Xh6PMSb3AmF0kS3Dfn3FK4D3vIfVCNq6lX+NlHJ3+bFpBsnjInvwDYncHa7i23rup9jjY5tGsb76CNavj1cSwODI/WlsBcBtmSzlXpVsGenxNLlfcEE2uT/xBHtuWrl3ZcucYT1CzclSZrx9V5CVe95Kjhd8A9iey/76qt6VuzdA2pM9dw4xrAltfqjcFxPiLm1s56Eggw6HrNVQxShGR5gqFeSe8HMBuIdZzXqjPguAkfvx0zpLFEqR+3M3HQJZmEfJpsWV+3yPp5LbMhvXJcc7MQHMkvGBkPujB2xQKNh5RaxwBLkXSvJwXWbL8MM0Ps4qEU5Px1GQDSSZVRSg8tPkLi375Y21hsOrVLYh97kz7BiNbx0HwhC7r2TPG7Qtsz9khVW3bIlXgnJBLdlzl1eICXI/fRqXXMLaGaRXqKKmvlDuPdkypw4BAMypCovD7wfNZmflLj3ngguAp6tTxVvtLZHnPqHPJyJ8zjbOG3KXlfvmzSwiZCDKfW6OkXuFb9wK5d5IKfcn2Gausf9xAIzcAeBOXBeR+/797Ibz3O3HgCCAbTThefmVDHzpM6r13iIWqqc81DCKDeuTts7EBDATjg0kWmbvIVaidefl8XQT10NR5e7CZJt4KYjH6iglbRmuxNPKKWHLSOReb/CMQui5DDM7w95zbAeLLbzuihpMMy7UNTDlHmzExATb7BQ3NDl8z63FhNZOuV/Pc2nuuCP5EXfcwRI8r+D113qyZU7sBzQN5lQZPgyEQR8bWLyBCv9vNrgtoyohtm0Djs2X0YBVTL0vpnLPIPf5eSZeyroDPxiS+6IhsmU2rmLLp4MHoetsyTsQ5V6tMnLnseEGj27wUrG0YuPL8Fk43WWXAWMjfoLcec0h/IermSoqqexqzSOMBLk3elsaHz7CSE00zxCYmAAa1IZ7ps8uTwD2Hp2EiiYuvDB+LLZlOk/BZt1DAA2m1bpkVxTAMmmrchehkG3IXah1AGi4fK+knXKvEqhoYmQ7q/vza//hIB58MM5fGxi5exsiuykid6ljlVOVfPZ6jnI/dQrPfCYj8X/7t+RHfPvbwPXXx5xUqbDj2JUtc/QpYOPGeI+p1occlm2ZvPnAbRldDaNjcwCbi/nuac99kMW8cmyZSgXQVQqfDsl90SAaKxu2ygK5eTjkjh2DVe6VcXYSY3JPym3RTs5sMrJUFOC5l8wkyP1znwOuvRbYtoU911bYBZPnuwty1+Cj6vZI7kfZFNiwJTlBo6X66f4TPvaeWoULtacTPUlUFSAIo6zDdhDqNIvcAaBUoq3RMpy4m2Eb5e5mkbsJmpNZNVtTMIYqyBTLXDIXziRuWJ02wAvBdbHfXYMtrICmpNylEE4pzNZro9x1nYXcyh0mjx5lm6kvelH8mKKwxLWubJmjTwFbtkTnxKv2ETwub6jm2XQZ5L4fW3pU7oMj3Ian4ksHn5uIvIvJPRzaMosJQe6mCWDTJhYOCeRuNnX9/qfn4cHE6AQjR2OEyaE0uUfx9m48Ga+76CQexuU445Tw4IMs9vgNb0AU31ci7ErKIwzxGVM4jarXWzemQ8fZeDduT94coqX6bP8qZ++ZddhpP5V4jBDAUJrwCmw4iZh1y84ei21nRMtw4m6r3DPIHQACL9sHm53XMa5Wc03qQSn3Q+4qbOL9zGLlLm3+zkubq/XsUEicPg1QihtuYDVkTpxgfxONamRyB4oXD4uU+6EngC1bYFjsuMlWUddIbKi2V+6GFpN74Vh3Tu6VMk9gG0AtHIGvzd+A13/3bVFSGCCRuxbC7zfBqw+cN+Su62DkLiUyzcz0362+xptTj04zkozIPVW6VNhDCXLfwXa6frB3DJ/7HFOz//E/IurGZIMxRa5ydyRyb/ZG7odPMfZYvz1paEf8Ve1virgu8MTCWuwsH2j5GyP3zpM/Uu529ljsEmlV7pwk0spJrvUhK7i6F48jr2n3XF3HmLaw6OReD8wofj+L3BM+ez1Hufs+UKvhBS9gjwnf/dvfZjfuXbuSH1u0eJjjAIRQGEeeTij3vshd3lANcsSEpNzXrQM0NWTkXjCt1oEVldVwBlB/XmChyU7QoUPxY7It49EhuS8aPJ/AJC4IASP3Q4eAMBxYOKSo6TI6zU6yCF1r8dw5YRhe3Pjy6o1HoMHH9+6v4POfZ9mWq1YhVu6U3ThyPXdB7toc5sNSoYbIaRw6U8IUTsEeTW4KReFxdaOv4vePPw4EVMXO8SMtfzPUoJgtI4q/5ZB7qUTQUMpJ5c5rjKfJXbbTZbXekGqS5wVgzDomxo16buxgp9DVIggcH36oRVFAEblLlrazEJ8PeaM1Ivdx3nbx1Cns3s3sIuG7f/vbwAtekKxHAxQvHtZosD0OQkNg8+ZE7Zue0Y3nrlGoKrB5fbNr5S5Wo4NU7mJlePRo/Fis3Gki8epsY8WTu+srMAhfi2/axBTNiRMDC4esnmKTenQNuxqNMp+kqep2rgvo8EDq8QZlCXU8E/fg418cxcGD3JIBInK3Q/bcjsrdXACFIirrdoXDcyPYoBxteTxRGbKLdmZp7N3Lfu6cPtHyN0MJ4BXwJCNbppSj3G2goYyklDsvIdtOuUuE3vALKHfXwpjpsvOjKLnKvZ/MZ2EniSigiNy9eNwJ5d7IUO7TfIeX++7XXcfI/amn2L8XXX4CeN3rYq8G3dkyls5vLlu2wOTnxM0pt1EICc89n9w9GNBVdnC3buLKvcik5+Q+Ns77qA6giqWAECdDcl8CuL4Ck/BZL4zMgwexbRv7b9/K/TSb1KOr2FUYxbk7ySvc8/hyWZ6MrovrcCfOzCoolYCbb+aPF1TugoSmSuwJvXDwoblRbNSPtzw+qLK/e/cCCgJctLr1PQy1oC0jlHsp+0ZQKgH1NLnz923ZUM0i9yBAPYxtqbzKhLP+CMZtlxF7htQVarufOOpE7RbppytXJ5bVeuL//Dit5v4Dr/d7ww3Agw8C//AP7OEXzf8zcOutwFveEt2Jiip3xwFslRP5li0wxXwfELl3Vu7s+27dxjdU5+ezny/DdeGQEkZHuYV0tpS7vszJnRDyCULICULIQ9Jjk4SQbxFCHuc/J/jjhBDyUULIE4SQBwghz1zMwReB21RgKpJyB4CDB2HbLIQtr951UVRn2AVV4RPHMHn0gJtD7rIM9zxcB5bGfvPNcZ2UyHNvMj+xo3KvsCu/l+Jhh+bHscE42fL4oBp27N0LbFcPwB5rjeYx1CCzVVwaUX2gHHK3baBB4jh3SgE3NEAQIoSasKtkco/UOq8rI5BXU3yuWcZYic+lDJM6Sqjqw3cXMdjtlLsjx7zL5M79d2MNvzOfYkXThO/+x3/MesrsPPgN5st87WvAxz6W93Uy0WgAFuF3oE2b4gzaQSn3vHR9yZYBgK07NBzBBrhzBaJ0HAcOsWHbgKn6cJp9lksQoLGnnq3cAR/GwGpYdYsiyv2TAG5KPfZuALdTSi8EcDv/HQBeDuBC/u8WAH85mGH2Dq+pwFQ46W3ezH7efjtA6UBC16pz7Myle3W0lGL1eE35lHJ/Ib6DK54R4h3vkJ4slHuTSfFcz51v2k6NM5LvttWe6wIn3VFstFrvcLoOjFhB3+S+bx9wKXkkumHJMLSwELmL7EyrnP3cUilZfkAc+xGwYy1HyMgbdtHyPE3uGfZxEABVWsF4hVsSGT7GQMid2zJpz13e/JXDIuUbUZRLsW6KPcDJ/dnPZu938iSLkiH33gO8+tWsjsO73gU88AAmJth86FQO13F40bDVqwHbjsm93vu+jFxaIDepTUTL6Oz7btnOnnfgSAFl7LpwiAXLAizV779EsTQmcVMS5E4pW0wI5Q4MuF9zF+hI7pTSOwCkY0puBvAp/v9PAXi19PinKcMPAYwTQtYNaKw9wW1qMFRO7tPTbCn6F38B/Lf/BtumfW+A1Wp55J7y3D3SqtxdF5OYwf33Ezz3udKThXL3WHZornIX5M6v5W7J/Qjf49wwMpv594mx/mq6hyHbUL043JtN7mpQKJpAJPAIIkkjCoXkrCoIqgK28kmQu7TsbwgF53ns5sCRpdxFUMZYhSvlxVDuzSYalLG5UO6aBigkhCtFeDhy5Iz0/0i5rx5nypyTu2Egml8vvHoBePJJ4FnPAv7u79j3eP3rMT7CDlIn9e44gB0sQATiZ9W+6RaB4yME3wDPC42NlDv7des23k/1WEbachrcc7cswFQDOP2WKBaQMmsFudfrbN4zcifiaUuCXj33NZRSsRA5BmAN//8GAHLr6UP8sRYQQm4hhOwhhOw5ebLVFhgU3ECFqUoT76//GnjnO4E/+zOUZg6jUe8hxERCtcYOYSu5J0O6vCbJ9NxhmizoW4amAZaFks9ItaNyX8XGUD3ZXSLJ4cPs58ZKNnlPjPdnyxw8yL7iRWF/yl0o1TxyL5XAPHN+F2xP7jzvQfXjizyl3LMuxtkTTM4Lu6qd594zuUvJNnKpBVPxEz6xK51mefNXbK4atsru+JLnKOLaXzTNC8s861ksNOvDHwb27cPEabb51OlUNxqA5ddici/3T+6J75A3HwS5czUsAiIeOz7W+QN4KKRlAZbW7L/+vIBkJx07xlS7EAHlcpwBfK6RewRKKQXQtatEKf04pXQ3pXT3qlWr+h1GLtxAS5K7ogB/9mfA//f/wZ49ivrDT/f1/tW6BgVB1Okt15bxlXxyz0K5DNudBZCv3IXCnF7HZlHtVHfhaCI2d+NYdqzwxFR/Nd0fe4z9vAiP5Sj3MLMPaBqiTkyeLWPbQINaucpdDn8UyrBienAoD/NM2zIZ6elzR9lJEBEXi6Lc88hdC+BKKw7HJTDAdm3lVYbLQySNksZWqafiRiW/9mvMjbzgONvjiZq+cpYcJ+wGX0S5W95ctH9l8uiwflrXyQl/7Tx3D0ZEmOvWARPKLB48sSb7+TJcFw5ltYlMLYDTb4liaUxCuTcaLKBB7O9WKlJxvDbdpRYTvZL7cWG38J8ipuowgE3S8zbyx5YMXqDCUFOmFyHA7/wOSkYTjWp3hJhGtaFhVHci8U0IoMNvIQivSZjnnrJlcsl9ZAS2w660XOXOJ83UBsYE3W6oigSuqbHs101Ma4tL7nrIlE8HUzKqyV/OvihLJaAemLFy5zeDMtiVllDuoQKVBOzcw2Z34QKe++xR3oVpiito4blLu2WDJHc7Hg5MtZloQu16wAhpgCBMROZ4Tj65j4xw9X7PPYyYhaDimT0TYHOtI7k3KAvR5UsYcU768dxl5Z5baCtlyxACPKP0Ezx4Zn3nD5DI3dKbrETxIHY5JeUOMGtGKHdmy/Cn1ZdGuvdK7v8M4E38/28C8BXp8TfyqJnnAJiT7JslgRvoMLXsiWcbIepOf4uXqhN3YRIwFL+lOJHbVLtW7lq9Cl1vR+7sopjcxIizOtMduQsSy7M7xicIZshkX+ReLoVYi2P5tkybQl0CUWXPNp57QNXoIhIlcTNtmUCFrgSw9IARqetCNMcWyFTuJ3gXJp6JjIkJdgClkzMIchc3maRyD+FKpOe4CizVgwk3cSMSYZFGSWO2jETuEe6+m1kyAoLcQ2bhdDrVTiOEBSc6n2ZlAMpdtmXy9mAiWyZ+6PLKATxU3dyRpwPHh091Tu4hO+8d5lwhdCJ3g3vujQF8Vg8oEgr5BQA/AHAxIeQQIeStAP4AwEsIIY8DeDH/HQD+BcCTAJ4A8NcAfmVRRt0F3FDLJfeSFaLh9hfzKndhEjCI31Ijw2t2b8tgYYGp0rwNVf6xpfXjsNBAdbY7NRIlvZSzi45NTHDPvccN1cceAy7a7IAAOcqdti2xKxDFfo/kx7kD8XFyeCXLTOUeKNBJAMsIGZFyck947hnL6NmTvAvTan6sMurk5pF7YZGYZ8voAVObnJBcX4Gl+jDgJcndkch9ero1zrdaZSflmVKEMif38eap9NfJRKNOGbnzg26OsvmbzuvoBgnlnpfUJshdmqrPmDyMalAWFUVyIVYVlsWPJcxideA7QdpQBfLJPd2452yh424WpfRnc/50Y8ZzKYC39zuoQcILNZha9kajbQP1uT7CohwHNToSdWESMJRmS/s4L1Bhd2PLlMvA/HzbeiUiIsdYM4FRVLtOYooUcSWf3OdpGc0z1c4TJQOPPQZcvW0BeAQ5yp0WU+5y8bcMRKRapxgD4JxhB6ySQe7NkEBXA9gGV3BZtkxGIs3cad6FaQ1nXbm+zIYNyXFI5+vxx1nd9Lvvjpt65H/RPHIPGSG5LqBpcHwVphbAcL2ULROCIIRqG7EtQ2m8YX///eynTO6WBRgGxr0T0ddpB8fhNY8EuQvlnpPVWwSJcE6qJ8csIEIhZXJfxWozPfhgHOWcN2aAfVXLCLEAazC7nHwfYGLExcyCiaNH2ZYecI4o93MdLjVg6NkTrzRC0Aj6aBEmarmPJFcGhhK0EITb1LpT7iMjwPx8IeWur51i5F7rroKj51JGBqXsMUQlVE51PzldF3j6aeCitVz15yj3dj1L5fcC8g9VpNy5xSZ6jFYs9r7JDVVuy5hJ5V5HCRV+k86q+Dt7mp3jsbWcwTPqy2SR+2OPMXIRvNrpi2Z57pbByZ2zlNtUYOkBs2UkC8lzKQx4ICYn92YzmbZ8993sp2zLAMDYGIz5MyiVCtgyDpLKXXjufVT8TSh36Nl7MJEtE3/fy9ezTaMHH+w8ZkAod8qO5SDInSv3VaMuLKuNLXOOee7nDNxQh6lnLxntispC6HqpuAVIXZiSDxtqsyUZwwslz12s0/tU7r7PUvuVkoVRUkN1oTuLyXNCRgYjpcy/d9N+LY0nn2SH9aJp/uIMctf1YspdZG12VO4Bs3iE514u8VZ7iQ1VRu62RROeewN2FMPuZzTtnp0FSliAPslPdsbBySJ34WgdLhJWkOe563ysnKWcJttHMkhyb0ecTxhGnPwg++733MPCTNauTX7uGOu4VSRLteEqSc9dVIXsw5aRbbDcm32GLTM2oWCTcggPPdT6dBkJ5W5KK7Z+wT13Q6dYty6D3E1emdRZmiymlU/u1ICZp9xHdbaR1msGplDuo8mHWbXDlOcecuUeBPHkdV0k1pkyinjuPovMASEY1eqoNbok97rPInhKHci9h5rujz7Kfl40wXMYMpV7m4tZAksAc1tW6gKRcudZqtGGapm32kuTuxrCMpFL7lk1xeeqwDhm2VULFCZ3MbVEwlj7L5pjy5g0qdwDFZYewiReUrl7TLnDNJlyB5K++z33JC0ZAYnc210KlLLNXNmWUVVARTNR+6ZbyLZM7h6MCIU0pElQLuMZeLCzcpeKsZnG4JW7rqGF3MtlmdyHtsyiwIMB08hWFaUxHR5MBMczogqKINWFScDMVO4aI1IgtmY8r2/lroNN0oruoup0ZzG5CwEjgxxyj/YMa9077iIM8sIK787czpbp5Ln7JC7+loF0k2y3ysl9tDVD0A9VaEoI26ItoZBjo2yeZHnus1UVY5iLyb3ghuocD089vL/ABZ5H7gYS5O4EBkwjZHs70o3IcxErd0HuQrkvLLBaEGlLBojIvVPxMCF2ZVsGAEziwXW7FwDp9yWkjU2XYctgZATPCO/Hvn20LVfL5G6ZfBU0QM9dKPdjxxi52zbLQ4zIvTFU7oNHwHbGjTxbZoIRa+NID74DgHC2ihpGMTqZJD9DC1vqV7ihDoMTcUTuRaJl2pRI8HwSlTMeNR1U3e660HuNZltyj8TpgtG1dfXYY6z8yDjNt2UMo5hydzwVlpJP7i3KvcZvePymmyB3ypW7jZZQyDG+AktvhgPA3ILGEn2M/GgZTWP/EuT+MPNjjtxTICKYk7uhh9HGHMCmSLShSincUINlUBikmShLIDz3hHIX5P7AA+wcdlDu7cg9arGXRe5eH+TOlXvZ5NEnWTd7Qe5mUrlfjofg+yQSE1mQi7FFN8pB2jJG0pYR9/+I3N0huQ8engcXJkwzR7lPMqnVODrb09svnOBdmKaSyTWG2tob1KN6VDEyYutOG6qUwjaCfOXeBHTCLoRRy0fV764bk9cIC9kys3S0WGlVCY89Blx0EeLXtSP3TspdruyZgYRyr9ej+u+VSXZemr607A81Ru4WaQmFHOffN6um+Gxdx5gm3WVVldWcyCgeliB3XjX08EHaObaaj8NKzVfTkpS778OBBdOkMFU/Yf95PvI9d9GKqQ25j4+3t2WEd22jkTifJmnN6+gGUaE3o1nAc5fOzcgIngHmybTz3RPK3cLglLuwZXRmy8zOsuJsLeQ+VO6DR+h4aEKHmeNW2NNsgtaP9hbHHXVhWpUk6KyaKR7Vo36ThZU7AFtv5nvuTSUm95KPajObpPPgNsJiyr2HLNWI3BcW2BWVbv0DwDDbN6SOxumrbcm9RbnzNPzyJC8jK21oMeVOYZdIrNw9j9ky47xJdkbxqjnRhUlGTgmCBLnPsp9HgtWg//craAtR4Co1JUxLicm90YALE5bJQm7lmjNRWWnDYIStqsxzDwLgr/6KdcsWZa9lFFTu0cZkWrkrPlyvdyqJyN1qtvXcfUgCCQDKZVyCR6CqNN93pzSq229Z0ipoEMpd2DJGvEf9+OMSudu8YYzbe5hoP1jR5O7NsxOYmBASSqsYuTdOFOjDmIGI3FcnK9MZeiu5uzCjrjXdkHtJ84op95EQHjW6ahQRRVfkkDuLC+6+7O/cHHD8uETuGaodAAy+OdbssGx1mhostQvlzsk92lAVccZhGDV8sAS5c8+9jhJGJzi5Z5SdnXVtjJmpeL8C5D7Le9C6sHDmT/6u7feMqxemlTuJyb1eZ8rdat3b8UTlUVGMTsS6f/WrLC71134t+3PHxoBaDRNjIarV/GoQubaM6idq33SLmNyDXFuG+k0E0CI1zF4wAhMeLtrs5JN7swkHcaVNyybwYSB0B6/cAdb8R/RlGEbLLCJEA4HcELoJRsr1kz30pwNQPcP97hbPncKTixOJOzy/kxeyZYRyV718z72pwhDkzju7d5PI5LmU2TJ2vp0zUWl2naX6+OPsZ0dy51+9UwafG6hxTf4MtCj3RggNfhSmF11cUZNlCntEQQAN/oIHv+4jgIbKuAqCsKX1H6XAnF9iXZhk5FSGTCj3+fi9Dv/wAHDvvW2+KCN3206KEdPOUO4WaelB6/kkVu5ATO4f+QhT7K9+dfbn8nAv8f3yTnWuclebcP3uIrVkiIifshXk2jJC/aY9dwB4xtb5fHJ3nER4aRS62U/9+WhQwnMnEbk7TqzcRVe2oXJfBETkbuUo9xH2eON0b0XdqzPspFXSce4GhQc9imcP6i5CqDBGOOEXUe6cEEuq00a5E+gKm6SjY+y7FGkGL+CKDbgc5Q4A46MhI3dRZawAooJhBZV7Xs/SaJxNFaaWT+7paBmnTmERt1U5Sd18LN7VyZlvorHAPr80okBXghbP3XEAjxoYG0mNIadhR4Lc6zqrrQPgiLkd+OhH23xR7rmn7rURubsu+36wYNoKDDWEK7UpbCH3qSngBz8AvvMd4O1vZ7u9WRD1ZQw2L/Osmchz15sJm40VNuuD3IVyt4NcW0ZsuqY9dwB4xsYZPPVUztxPRSCJYyv2ZfoCJ3ddIndAsmWsIbkvGkSN6TxyF6RQP91bpafqLDtpLXHuIsSPz1qvxhRRVMOlG8+dOPC87KWyHyjQuaKtcHLvpjJkFDrXhtwnVumsYcfDDxd+38ceY67Ajh1oT+5WsdobTqDDUvOfI8IG62BJAY7DOu6Ii6sp4oyjuOQwqlPTmA9QX2DEYduiaXeSBIWSHS9nkHsn5e4YuNRgtdIPX/szwOc/n2hMnYCwZVLK3RpRE7aMCxNWSYGpJRuMRz0DBIlPT7MQDtsGfumXsj8TiOvLaGzzO8+Bi2yZ9J6AFiQKm3ULodxH7PxCciLRKWHLCOW+juVSiGbsCaTI3eT7Xv0UOosglURYtSq+36XJvZN4WSysaHKPOtPkKXfOaY2Z3nKnhVJIk7spokA4ubs19jOq4VKv80afBTx33q8yS70zcuc3mAl2QXfTjSlq/dfOllmlYcZcB9x1V+H3fewx1svBstDBlimo3NtU9gRYPY+onECjAcdl5K6ZKeXUbKIJDbpGYZe5cq+HaNQlclebLZFOguzGRlPjFOTueRB34BZydy1cWtoPADhy8QvY87773Zwvmk3uZklFAA3NBRfNWgMBNJglhYfcxvaf11RgKM24LosIh/yFXwAmJ3OPX6TclfY13SNbJj0+LUisILqFz7m8XApzlXsmufN5ddkkWxll6o+0cuf7Xk6fTXrYoLgtYxIoCrCGl5Zv2VA9x+q5nxMQvpq4W6cRKfdqb0u06jyb5C3KXWTB8d3NaGO3wol8YSGewJ2UO2WWUZbv7gcKdF6rXvj+1RPFyd0Vy3jLyn3OxAQwo69i5F6wvGEUKQOwUMhccucbmJ3IPdRg6u09UrmPquMqsLSmtCxO2zJx4w+Z3Eslll2crkwYKfd005/paXZiTJP9W7MGtu5H5yoIgFqzhFWlOlatAg7P8zfI885cFw4ptXrufJXhzvtRgpZVUrlyl20ZTu4Cgm1+9VdzjxuAiNzHMJf4vmlEtkzaNtLCvshdJGKN2PlJTJHnbrR67tMKswwz95t4FyaAK3ebK/ccz/3gQeC++woOXKwE+TwW1kwruS+Nch9Qp9jliciWsbPJPVLu1d52zqsL7PC1eu6ETVKXEa23wN7fGOUkurDQuRqWUO6UWThZyt0LVRjCc1/FVgXVE8XDZaLuUHljACf3YIyFv+zfD2zd2vY9m02moN72Nv7AiRPAM56R+VwRGtqJ3J3QgKW13ym2baAxYwP1M3B8BZYWxOTuxMrdhw5NA+wKO3eNhRDNRvweuhrCS20Ozp4JASgYm0jNo//8n9myodlkgdZf+AJsWkejwchSkM3YSBPrS8CR09LNPQuuiwYpYV3qXmuWpFZ2nNzNEY3ZfzK5B0o0HwAA/+W/sO7Yl1/e7tBF5F5uzrYdXmTLlJLHwdRDuGGbBLo772R7Nj/905l/jjZUR2hutIzg+0S1Di4aLHcuMb4EuHJXFApNIx2V+3vfy3TMI4/kfx15UEK5A+3IfWmU+4omd9G+K4/cI+W+EDKZlRGL3Q7Vhg5bdaHrqTh3k5M7b3AtlLtZ1ll7lno9Jve82jKiSXbAfNBs5a6ipPNomVW8G9Pp4jeqqDtUB3KfcwyEIFDuuqsjue/dyxTe7t1gGZHHjiGx2yShKLm7YX59IIHSCOHK/TAcX4VVClrjjCPPnUaeu+MAXoNdnMyWCZKRThCNOmyMT6bm0Zo1wG/9Fvv/N7/JyJ24EckIBTw2SrFhDXD4KL/c8hLCXBcOsVoWUlET6noAyrNvrTIjd5fG84d1HZOIcd26XEJNQJC7d6bt8PLq6ptG0h5qwR/9EfCTn+STO88rGBkBmtBBPR9pIzWyZeSPsW2AEJhuNTG+BITVpQcgRIPJN9LzPPeTJ7uIOBP1bvjlk0vuGQ3XzwbOC1tGhCSlESl3avVUPKzqGKgYrckQUeYlJ3ARtWPYKvvQIsq9VAIIQSlgS/hMz50XwQKA0TXsTiXCM4vAbaqsfEGbm9r4OEApwZy5BvjhDzu+55497Ofu3WAJNM0msH595nMFuXeKJnCp3pHcbZugQUbYhmNThWWE8Yaql1Tuug7YJR4pVadoODK5t+YozB5n52psVZvaPTzjy0Y9k9zXrwcOHyFss7MduSOD3KXwPWHLmGV2TOQetF4zo6VkEXByH3FYkbE85R7ZMiNp5Z68ybRgYaFteyqvqUBFEyb/3ln1zzPJnRCgXAZZmGeZp1nkLppj86zf6KbeyCbcuTkUzxXhYkHM4xZyL+mJsZ9trGxy53dncbdOI1LuKLV2remEMETNNzFqZ5C7pcCHAcpL5UUbu7bK5Em9LvW4yyF3RQHGx2E3mJrKVO4SuZdWjUBBgNpscX/PayodySAqQXD58wptqu7Zw/YgLrwQLFID6KzcOygbh5qwjA7KvQTU1TJQqzEbx0Tmhqogd0GgTiMm91IJMLQAPk3ZMukuTFkQ5B5mkPuEgg0bgBMnCPzSWFtbhsW5Jx8WU8StB1EIn1XRYRgUAbQoksoLVRhqD/4ur3RVarBroKNyTzUqN03avi9po9GB3FUYSjMKc/Qy0vXF5aKnFwgjI8DCQj65ixumkeSCvBLF1WrO+2SAej6aRch9acq5r3ByFxuqOe3ZVJVlk9ZRyu432Q7z86zcr92qMoQH5y+kyL3UhXIHgKkplOpsXJnKnarQNTZJydgoKqhF4ZlF4AUqzDYhhoBUguDS57KSsR3StvfsYYUHFQUDI3cXZm5lTwHbBlPuJ05E6jdWTilbRiL3hgPUeavFyHNPNe2eO+VDRRMj021q9/BoFDtciMmd50GMTypYv55x3zF7W1vl3qAZyl0i92gfqWJEZTXEKXGD/JaSbUEIMDYGpToresRkIvLcK0mGjVL681is0WjLmCLKp91KTrx1C7nz6qmW1d5zF+Gb0UZ6znC6Ue5xYhWbP2lyVy0dBCF8f6jcB46op6Sdv7VgixC6bsld1HIvt15MwuMXXnt0QZa0SGkUJXd7nsXwZil3L9RgiIu5Uum6G5MbaDC09hMvIvdtz2RjbtNSyPPYn3fv5g90IHfhSXptbBka0kLkXioBdZncbQLF1KEgiD1P2ZYRySwOQcNl58u2s1v/zZ4JMYY5kHRXFhnc2rCbtahk/9xxxiBj07roxIcjxtb2yp2a+eTu0Fi5j7JqhEBM7mw+9BiZwevLcK7MhOOw2u16OTlnTZMkosNaUK+3J/dAKPf80NhccufXk213UO68pEO0f5Gj3Ofm2H29SP9sIUrETenFLwbe8x7g2msRDVaHH3VMO9tY0eQuTqA4oVmIQui6JfeoC1PrJBEnW5C6WGYagtzlDdVOyr3KYnizlbsGXXw1Qe7zxcndC9T45pADESp9fPoy9p821sxDDzGiichddKjoqNzzP7/Z8BFCbRetCUAodxs4fjzK4BQXV9NP2TKGZMu4BA2fHURmy4Qt4XjztRAV1FrDomSoKjA2Bttnu3GNRtKrF9sOh7UtuewZOD58queTeyNMRICJDF8xlQZB7u2Ue7rFnjw+ud58C4Qtk2PbCHKPlHtGLZbMaBkgodzbeu78mEbKPaP+fBjGUapF1LsYp7gpjYwAH/iAFFksyP1ctGUIIf+VEPIwIeQhQsgXCCEWIWQbIeQuQsgThJAvEUL6aFLaHyLPvQ252yMKU+7deu5RF6bWSRKRFrdjIltmRO/alrGrxwHkeO5Ugy4uZl3HKJkv3GovDIEm1WB2IIMdO9ge4INHphhJtyH3xGYqwJT72FhukpTBQ/zaOT1RAliHUvWlElCnMblbJQUwjKRykho+RCULXIKGJ9kyWms4XmOBsjK36YSGNCYnYXtxWN7cSfbBY2vtWLkrG3OVu5iv6cMl7w+IomgitB5gSlecz7x+wR0hKfd2oZCZ5G4R5v0v5JC7mLw5J9oP2d5Pu3T9tsq9HbmnEsMi5Z5B3rVafP9Jv9fevcAf/mHysUi55zGcylpr+gVWAYuBnsmdELIBwDsB7KaUXg5ABfB6AH8I4E8ppRcAmAHw1kEMtBe4/OCLJr5ZKI0Q1JVyz8q9MtZ6CEV0TkTuQrmP6F3bMqUZ1uyho3IHMKrXUW20CUmTIK6zTmRgmsCllwL3P0CAa65pGzGzZw+zcbZt4w8cPZobKQNIx6mN596p+JuAbcdRTw4sWGUV0HVoaEbRCmIDTDeIpNwV1H09eo+s7lBOgzJSa6fcAWBiAiWXpXc2GsDcaR8mHJjTFUxPM2I6TNfnSuPI025jy4gbgGXFezvufKwOjWKnvxVFbJl62FLLHQBMTpziRtwC8cVyNlWZcg+iZKBMW4Y3UMn03PmGalvPnY9R/MxS7nLyVprcv/Ql4N3vTt4Uomsoj9wJgQ4/0QrxbKJfW0YDYBNCNAAlAEcBvAjArfzvnwLw6j4/o2dEd9aR/Blv2wQNfbQnz72GSktFSKCV3KMVRFnv2pax22yoelRPdJkq6T7qbrHUhZjcO2/27NrFrfZrrmE1TXNWOXv2MNUe9To9ejTXkgGKKXenyv7YyZYplcCanQOc3DVpWcwLuHnxMjraUPVUNHwNutLkG+ytWZKNBm9QUYDcRXRTo8E2VMcxC4yOQlHYoTjcXJMrjeVGzjIicnfjED7TjEMkvQW/q/OZiSLkvhDkKHduQ1Yz5DCl8eTNsW28QIOhBjDsHjZUuXLv6LkL5S6OZUbnKDm+Pa3sxXvLj0cbqm1uqDppwj/XyJ1SehjAHwM4AEbqcwDuBjBLKRWy5xCADVmvJ4TcQgjZQwjZc/LkyV6H0RYuPyFtlXsJqGvdk7t7qgYXVksXJoBHxUBS7mJjt1tbZnqakQpybBm+OShgGWHUmKATYjLo/Nwrr2T2+clLrmcPZFgzjgM8+CBLiIzQidzFTbCdLdOh+JuAbQON0AQFJ/eK0WLLyB6pYQAEIRxfQaOpo6TxEhFZyt3NtiNaMDkJu85ufI0GMDdLWUo/32zdsAE44k/nsqfcMUiGTEgJ5S7sv7NE7o35HHIXKf1Zyt3z4haNeeQeaglbJmsl5xVQ7m0991Lcag/oXrmL+1NCuXeyZcDJPaNt49lAP7bMBICbAWwDsB7ACICbir6eUvpxSuluSunuVatW9TqMtoj4s5J/9EsloKGUu/bcayfZ2U93YQIkRcpJPSL3stG1LaMhgK6Frcqd0gxyp3AK1viIPr5DFArAyB0A7g95GYFHH215zv33Mz6M/HZKiyv3NsqmU9lmgVIJCKiKOkpsA7aixxuqoigkV1qaTkAIYCkeHE9FvWnA1tjn6DptKV7VcBX2d9LhIp2YgL0Qr7Rm5xRG7tyrX78eOOxM5St3N06mkpFQ7k78mCiI5y40O1sEnTA2BlSrGCnR/CSmesDERprcRez4Qoa5LE/cPFuGR30ZwnPPSPoR6rdnz52Tuzg+WcpdJvdCyj0rsSqFc5LcAbwYwFOU0pOUUh/AlwFcB2Cc2zQAsBHA4T7H2DPECRTxzlmwbR5C16Vyr55iV1MmuYsQP2HL8KidiNyLlB8Aoj6YJTNsUe5RZxqZ3E0KJ+jScy9ABhG5P1lhM/n48ZbntGymzs2xK6IduYuqkO1sGb6BmK5nkoYgxBmw2E1rzGyJVhCZj8LbtVUPjaaGRmCwGuVgK5kW5e6psNrUk48wMQG7xsr5NhqsUUeLcl8Yz/fc3aS6FEgodz5t5PK1Xn1A5E4pyqbfxnPnew9pz12Q+3zGiZQnbp5yp6yvbTvl3tZzbzRYVdBcz92GxW+EhAAmnKhptoyEck9lsIqhy19BiJKOyj0498j9AIDnEEJKhBAC4EYAewF8B8DP8Oe8CcBX+hti72A9JV0QJf/glkpAA1b35M5ruIgmGTKEDSRIXUxWc0RjH9hsxhd4B+UOsOYI6YkrEqR0aWJZJoUTFru6IzLosFEJsFrV69fzTdXVq3PJffVqYONG/kCHMEggvijaKvcOxd8EhJiMyL2sAYbBNlQFuacqC1qqD4eTu6jRE5WOkJV7U4NdlNylchFzdQ1jqEZkuH49UPUszHvZZW0F4bQjd6HumXKPQ24HQu4AyprTJomJZtsywoacz4j5K6TcdRhaGK3kMpV7kEOkogaT3sy3ZVL1ekziZbYFnDsdn2M39V2ylHtu1qwEnbQ2fzlb6Mdzvwts4/QeAA/y9/o4gP8O4L8RQp4AMAXgbwcwzp7gerwwVhvYNt+IO3Mmv3lkBqpPsptB1h5bZDfwKJmENydUj+hsVIDcS1prq72o0qRUAtUywsLkXsQVknHllXxTdc2aXHJv2UwF2kfLROTeZpwiy7gDubcodwuxcueqL84o5CSqNtHwNdRhwzYEubeGQjpNDZZegNwnJ6M9kkYDmGsYGDPq0UGJwiGxPtOa6UjuvhKtRi1LIlVZuef0C+4IQe5qA46TfSk4DrJtGamwWQtkQm+j3A0tjKNlssidE2Smcge/UbdNYoofshQvc29q7lg8VrGRnx66/BniJtRWuSvBOancQSn9XUrpJZTSyymlv0ApdSmlT1JKr6aUXkApfR2ltHgN2gHD9QlM0j49rFQCGgGvi9GmeNjjjwOvfS3w+tezrMnaI8xtygp9FtE5kecuqypB7qIjQhHlrrityr3OPeKUcm9CL5ZdF5FBsSlw5ZXAvn2At2pDC7kHASuResUV0oMdslMBlvdDEEb1vLPgcMJIVyJMQ/DNGbAyAElyZ3+LPFJ+Q7R1H46nogEbtiEiH0ircg8M2B3qyQNgyl0md9fCuNRUO0pkwoZscvfjeHsZEbk3VTgeAUEITZM2pBvBwMh9RGHjz/LdHYdkKndDLkmcRiFbRoeh0YgkszI6c20ZUfZX8fLJPZX1axIfbsacq56M3yC9OZyp3IvYMkoTfrA0yn1ll/z1Cat62Aa2DdQ9fhhOnYoIVWBuDnj/++PWl74PvPK5M1DnslvsAa3x2668fIv8gwLkbtuAbaOkNFqUe+Qf6/HFbPMUa9fNb5cpEJFBh41KgV272Hffa+zCruP3JP527BgTuolqwAXInRDW5q+9LcOVe07xN4G0cjdNSBuqXLmLaBnu7VpaAKfJyH3c5LkIZqvn3ggMWF2Se60GLDQtjEmF5cShOIa1rb47pWg02UlLK3dNE5E9KjxFgaU2QYgRzTO3EQ5OuYONa36+dW43XJLtuQsbMqtdYidbJmTdlww9iIg703MPOih34kVJsPK+d7PBchsSyl314DRbL5C5kzFXpHusZkXL5IZnStCVEH4fjUz6wcouP+ArhZS7H6hoQs303W+5Bfjwh4E3vhF4+mng6quB3/zdEg5iE4Acchd2g1DuLvf+CVptmXYzA2Cx7rSer9wl5R2FeaUUzGc+A9yUimOKbJmcLlVpRJuqweWsAYeUSn7gAPu5aZP0gqNH2XftEBtuEB9eG0+yU2VPgRbP3QKgKNAQxLZMqlWbrTfRCE2m3C0e0WSQqKY4wL6mE5qwjQLkLtkyYnEjN9WOKmxivFUae16iY5AMQgBLY02oHT9uFi7sEK8RxBFZBc9nCwS5U7ZnkOW7O66S7bnzaDRxI06gky3Da6IbGo0uhayMTi+P3IXnThyWpZt6rbCKEspd8TMbes+dCUDAjmOa3HveUFWDJVPuK4bcXRf40IeSkReur8JUOit3ALnFw+69l9kxf/M3bFn9538OnJg18Qd4N4AO5C4KOvkEBuGTJfIPzjB52Sm8bmoKpXCh1XMXJQ0kpSanqcu46y7g299OvT5S7sWmwIUXsmN1/8IOJlmkRpsHD7KfmzdLL+gQBilgEL9tqJj4Lp1sGXEeE7YMxLJYkHvKc9cDOLBQRwk2r/cdVfTkKl/cBG2zQFq/pNyPsZJAGKvErxsfZz9nMd7Knqlen2mYWgAXBlxPiSJ3Eso9Yz50BUHuAQsZySR3X8n23KMAgoxjJE/czDRr3s1Ip9J10/odOip3MNZN3z+i+ZPw3P1s5T5LMQ3GAWmLqZ0t0165t7ZtPFtYMeR+++2sKc73vhc/5jaVjuQu5mlWTXdKmSqV7Ybdu4Ff3nIbZjAJRcnOa4kmKV9eej6BIcYhe+5FdjOnpmAH863KPRXWB0ip1bXWnX7fT26SpSvadYKqsm5t95/iu4KS756p3I8cKUzuhZR7m0Q0IEe5IxmtIKpDRsrdDNCAzZV70o8XSjjKGjULJAdNTMCAB0JoTO6j8essi3UtyiP3BtgdKqsUj6mHcFkxg6hxSaTcnTDZM6AXROQ+CyCb3Bue2l65Z7Wu66TcBbkbknLPuGR93rS8xW4UnjttZH5EJrlrfmbP17kawRqwee3kkHtiQ7VZRLmHQ+XeLwTXyCnErAlA++V0O+V+8iS7UycUKYD/5b0LU2YNlUq28I4KOgnP3ZduMrItU5DcS/5cq+cu/GNZuYv+kKmd/qzSHsIf7RSFImPXLuD+g5OgQILcDx5k7suY3EC6Q10ZAYM025O7qOzZgdzzlXscrSA6MolSw5YRwoGFBmyUSknlLiKdxDET5N8WlQqIwhKeInIfT06Q8UqQbct0VO6M3F2Ykf9vlBmrJMi9V1umVAJUFSPeLIDW4YUhKxPQltw7Kfd25K7HJJlN7gp0pdl6vQnlTuONbBlZ5G6qTTjN1vk0N69iNVieQvpG1euGalZnr7OFFU3ubqDCVAsqd328hdyFIk2Q+/HjmDz6MD77xm/h3e/Ofs90FpzXJHFX+rQt0wlTU7C9uVblHpF7rNS6IfcolLJUfOJdeSVwumqwaI+Uct+8zkteyEVtGcWP/NQs5HX/SSNXuSsBmvz90567ZVA0YDNbhq96InJPK/cOtW0AsA4lExOwVS8i93Tf1fExPsa0NOZp8kD2tIiVuxVlFUdRKg6FV5daOfYCQoDRUZTd7G5MkT2ltrZljNoAZkWrdNpQlWyZaEM1Y4PdDxXoJMOM5+Ruh+xu1KLcM0o6WFoTbgbhVht6RO7pBtrtlHtbW0YNh7ZMv8gk96bWsdNQpNwn1reE+O3fz35u2SI9eA+LFLnpDVMdyT323KWu9EK5e15x5e7OoF5PKsdMW6Ybcu9hGR9tquLKlHKn2PTUHcBv/iZ7YH6e/StE7k14GZtbAv0qd02Jl8VCEYr2e6JRiwMbNr85iOMpbp6Rci8V9LInJmATF8eOsXGPTWnpP7dV7roaZLa0NQ1JuRvJY+K5FF6HfsGFMDaGssMETsa9BwAy2x3KVStbUHBDVTck5Z6xB+MHKvSsVbiwZZrzmR+RdXM21QBO0Cq351wLUzgNBUFLA+3M2jLNZEmDLDByHyr3vpCv3NvbMpFyX7sdeOqpxN8ylTsnd1x1Ve57pjMv3UBqXCyHkRUh9+npRNNlgbjLlKTcRfPfVHZdVlG+KMSwTa37NJ7BS8s8SJLkfuDpEJv9nwCf/zz7kAJhkAK6ErRV7lGVhnL75Kxc5a4G8MOUche2jMWJFkCJk3dUjCut3O1uyL0RhV+OrU6e4/FJpa3nnrdxaxo0IneT+/+qbYAghOvSuKx0v+ReZ8o1PbyoHHHG+OLaNxnkLlZzpVImuYcu70NqkFi5Z5G71C84AX7iraAL5a434YZJsUApMOeXMFbyYcGB0+hsy+Ru8krQNdrSk/dsYcWQ+wk2J6NOKkCqDV0OIuW+egvw5JOJvx04wLhYhLABAO6+m4WOtGncIDZ9BLl7zTh8LeFXFskVn5pCCXV4HklsiGYqd9FlppYdo5tQ7g3R17U4uY+NsSzLfeauiNwbDeDkaRWbcJAlBXzta12Ru6E04QX5k99xWS0QYrY/VuLibbVlwmgzriUU0qLwwJjJHskm98YCb6BRVLlPTsKm8YEeW5P0c8anlLbKPa8RuOh2JPcDJZYJEy48N9Xtq1dI5J4eniC3rL2HmNwzjlGjwU5GqZRpy4h5bBiQQiFb38cLc5Q7j2qw/LjsQ2LcGeRuaq2Z3PU6Kzw3Nsay2uVVSLMZByMkQiGLKHcthE+Hyr0vZCv3zg2DI+W+agtw+HBiduzfzyyZxCbOPfcAz3xm2/ckBDCIFykQL5C60htGzP5FPXcp61EgSqWX+sNG5J4To5sk997IYOdOYC+5LIr1O3SIPb4ZB9gV9NnPdknuAbw2SR6uy0tIdLgREgLYNs1Q7mGs3FNJJ7Iat/mqJ2r1xm8EIvKoU+GyCBMTsCljRht16JPJOP/xcYJZkuG5R+SevXEryN2FGVfINAyWBObFUUX9krtZPQlFaWPLZEzZaI8pKxe9wUMnc8o2yiGcqgooCDIzlv1Qg67khKOWy1F7wxblnlHSwdIDuDQpt0XRsLEptmksv09ixSvbMlw0tFfuGJJ7v8gk91DvSO6Rcp/kIX6SNXPgQMqSOX2aMf6zntVxPIbSjCapF6Z6lQprpktyl/cr09mWgETuqWSSbM+d2zJtyiFnYedOYJ+3HeExpvBEjPsmHAJ+8ReZcn/oIfZgkWgZtQmvzYZTVB+oU7IXWOOVEDz7VCL3Jn//FnKXLnh7hC+xRWVCodyr7EV2ueDSemICNvd/xzGbCiFise6zdAx0Pke554RcmiarUy83nhDk7nqSTdcnuZNqdk33yJbJsKcUBdCJn1lGF/V6lGndSbkDoopiFrlL1mYaIyOwvBxy95PzAWCb0w5NXnsRua9mqyHHib9LHtGLcbbLBme2zJDce0YQxIEusi3jhqxmRTtEyn10LfuPZM20kLvw2zsod0BsFArPPTUO8aFFN1TBWD1BziJOXfbcK4y18sg9oUC40mtXDjkLO3cCC4GNg0fY50b7Eut84C1vYQz68Y+z7yaydtrAUNsrd8fjKe+dkr0QH1ZC4gtOU2PPM03ustVSqiSVuzi+USeoDklUESYnYTfZJJRruQtMTAA+DNTnUlFcwnO3s+erZZFYuUvkbsKFN0Byz2vYEdky2e1wWaXFrBpBjQZcawwNYyxbuYtx8ygldt1kk7ueR+7lMix3LjHO9LgTyt0I4dKkqKmeZJJ8dG0JFpyEQk+EEKeUu6H4bafmkNz7xKlTcTZ8Is6d6lHCRx4i5T66mv3nJz8BwATHyZPZkTLtNlMFTLUJl2fBeaGWHMcglLvLlbtsy4yyCVtIuTshNPhQ7IJlITl27mQ/955cBVAaKfeNF5VYIPzOnWwDZN26QoRsqEEH5d65hISAOJeWFX+0HIrWotwlq8WusOOYrgvU4PsXXSl3fjOWa7kLRFmqs6nXZVQvlGHaJPbcRSkG3oDZ9ZSIJPWRPvrR84Yd5XJrw46IJHNucqbiw82qEVSv49dm3oefPvjn7W0ZbjXpJDtd3+c13zMxMhKRe2Jx4LpR85q0cvdgRg2iAGDuMLubja0fYbaMl6PcpWvLD5V8q4gjav6yBFgR5C5HMCZsGWp0JPdIuZMyi5nlyj0zpf6ee1i66uRkxzEZShApEI9qyfZn3ZD72BhKhM2upOeejPwAYnJvpMImM8ndDZndUbTmL8ell7Kf+5oXAHNzOHgQWE1OwrxwM2PUX/gF9oQCfjsgkjzyJ38iAawDxLmUL2RZOYmaJZFyH5E89xS5R54737/oFGcfQSpBkKXcI3KfSxFhJ3K3FEm5x5etSVjhNc/lN2urT3IPAozYYb4tk7P3YKrNXOX+eHMrfuJuyrRlYuXONyfVZmb0lE9V6GrOKrxchu2wchiJ+0etlpkYJqwvuVTJ3BFO7mttdqOSmnkkVrxSWWPW+7V9qLWuM6swbE9Di4IVQe4iUmb9+gxy79BGTqi9eoMAO3ZEyj0zDPLuuwv57QBgaAHbcKG0pZF1V7aMokTEk1TuGRuqQrlLCRhyf+LE8tKhMFAw1l7C1BSwerSBvdgJHD+OA081sZk+DWzfzp7wcz/HfhYm96BtBp/jq7B6UO4CukYl5Z5MOrEkkiyNsQcjz52Te2OeXcz2aEH1lSb3POU+n/rOqUbOaZi2Eit36UbDMnwJL07n9dGtA3EJAquZb8uMtCH3rHyFRgNzdBS1MDsUMtrY53YYU+6p96G0s3JvtCd32U4SnCA/d+4Y+2Vs/QirPeMXIPewzZg4dH7dZ2XdLjZWBLkL5X7hhbHnHoZg8bMdGgYrCuO3RgPtyX12lv2tgN8OCC9ZBXyfqS2jR+WOmHgSyl2E9UmeuVa2oCBIFA7zvNiySnv2BryCqZdJ7NwWk/vBJ5ssDHLHDvbHzZuB3/1dVkazAAwthNfGkyxSH0ggT7kH0EBpa0ahbLUI8o6bdvM6PaLN32hB0pQqQ46p8y1k247cG7BzQy4FubswYUrWiKkwrzs6n13erBMQ5G54+dEyOSuYXHKv1zEbVFBtZodCpsndUDM2VMOQJTpp+dEyVv1MYpwAOip3OVFp7iQTEGObRmGqyXrvCVtGEk5tN3k5REnurDLGi40VRe4XXBArd7HkMgsUfCqVuCrezhOZwhD79zPiF91zcN997GdRctdC5iW7Li+MlPpANrhC72VPsJkpK/doQ1XaQCO21TaMKxGj69KebBkA2HlJiL3YCXrsOA4cUVkYpFDuAPC+9wE331zovQwtgEfb2DLNziUkBLKUu9hYbTbjcrCRcpeIyh5jJyjqosXnTxTn3oNyHzdbyUzkTMzUU8c9Uu45yrjE6s77MJLKnUdleR4tFDLaFoLc9VZyj2yZSvZxMLUgX7k3R+BTPbNTU7RXwDdUdSVs3YNpNlkz+DxbZmQE5sKZxDgBAPPzcGBBVcJERIuY8nKBvbnTPghClDeOw9KacPz4BVmBCGxFzjpItYPBRZ0o0X02sWLI3TBYVcJ6nV3EUb3yDrYMIEVp7djBXnjkCA4cYDZPFIF3993sZ1fkrgGO00ru3Sr3ScZWCeUuNgflaBerldzzSnu4YhnfC7lfaWAO49h3v4d5R08q9y5haLQtuTtNDVZBcs9U7tKyWCh3caHLJFkqc+UoSv4Kz70ewoALpVRwhSPbMnarnRQp90YOued52iMaHF410pQipAyFkSrrFzwg5a42WjdUF9rbU6YWZFZapPUGZn0232uN1r/H1Ul5tJLabK3FwsndyNs/K5dB6gutofRcuafDSy3R1Eaq/FidCVFBDcr0JEw1gCtZQ+K6GcF8vCqObjidbBk+n4bk3htOnGDNmYW9OT8v9d4sIGQSyh0AnnwyOwxy40b2QQUQkbvrwoWZrLPdJbnbU4y1Ep57hi0TkXtOGFfClumDDHY+m43/th+xjeXNpdOpNN7iYLZMO+XeuT6QQLbnzn7K5J5py/DXpotXRU2h82IA05BtmVLruMUcnXVTNwtB7nnRKJKiT9ZJYYXXovPZj3LngQIjpN5qy4hkrlzlHsINWv/WqFM0ue1WbbT+PV1GQ1fD1tBYQaR5Yc0jI8DCAiyLFiJ3k1+LcrLf3BzfIxkZgaU3E/XexXuOYS4usRA1GelA7ryEtIjnP5voi9wJIeOEkFsJIY8QQvYRQq4lhEwSQr5FCHmc/+ztqu8Cx4+zvs2i6U+1CnjzTDUVaV6QUO4A8JOfRNmpEQpkpsowNMpiablyN+V2dkJiFrwQS6tZ5btM5S4lMUFVObnHn5VP7qR3W+YZ7DO/sY/d/RJ13LuEobePA3YDrWN9IIFs5c5++j7gBwQKAih81stEJbg7XfStUedNoYvuTZRKsBXu35Zbx20YQEn3MNssJwvsd/LcpfkjnzKxt+N5pH9yn54GAJTDaqstw8ndHM2eL6YeZlZanK3H46k5reQuAgMEuRtqRnOLTuReLgOUwjJzlHvq1InfZeU+V1Mwpi0AhLD2i9KNSrznOGbj9+fVLHOtIo5zltwBfATAbZTSSwBcCWAfgHcDuJ1SeiGA2/nviwpB7iLqrFqNT5xZ4JqMlPvmzYCqInziSRw8KCn3Wg149NHCkTIAq+LnwQCt1tgdvh/lvoZ9MZEtCcTkk07ctBQPjhuf1ryifK5Pelbuq1cDk+os/u3ohQCAzRd1vykrYGj8OOVcI06gRZ2HOiFTufPj02wCfjNZNlZYDARhdBjSRd8chyv3ouROSBRRIjfqkDFuu631ZTqFQkqnKV2b3A00eP4AbJmJCYAQlIM5+H4yVNCpNaHBhzaa0Z0GvGplRkjrXCMm96rbeuNJJ+PpKm3dYC+i3MGSkxKeuyD3VASSuFHKMetzdQ1jRiP+LjnkHtXP8f32VhHHOUnuhJAxAM8H8LcAQCn1KKWzAG4G8Cn+tE8BeHV/Q+wMYcskyJ1XRjS7Ue66DmzejON7T8P3JXK//34WctKNctdZo+VgpgoKJdmIukdyr5+OfRnfZ3U40uVhLcVLhHG1U+69kgEhwM7KQbihAQ0+1lzaOe4/D4ZBQaEkRKyMIiUkBLKUuyY8T67cZXIXETA2ceKkp1Q3oIZDulPuiMMF0406BMZH/BZyDxoe2yzN+ZgEoSeUe8iUu6+w81mgTEMuVBWYmEDZY5uT8r3HWQgyW+xFY9JZ1cpEE9NmE7NBOfq1FpRampymO4JllsiNyD1n3KKmuxlkK/cUuYt9DXmDd65hYsxkfqZlhHDCHHL3YnJnETwdlLsoIX0ukTuAbQBOAvg7Qsi9hJC/IYSMAFhDKeWVo3AMwJqsFxNCbiGE7CGE7Dl58mTPg6CUkbus3Gu1WLkX6UwTKXcA2LEDBx5jZzMi9y7KDggYBoUHA+5ptr41pOqN3UbLaKsnocND40w8c30f0NG6SWMpPhyvdTMo/X+vSWASv1AWaRYunWbnbAMOQ71we4dn50OEqnqte48AOLnrxchdKHf5sEbKyRfdfOL3isk93qSIlDv35x2XdOe5A1gzwb7M+tXZF/REpdnSsENEYeSm9+cod4N73axPb+/nM8L0dETusjXTmA8yuzDF4+Pknsrbn0Mc51/FaEt1saiXL49SygyNFTXf88KaRTcmLYPcSaklAilTuXsWxka4IDSYpSpWk7LnLgqRRZu8K5TcNQDPBPCXlNKrACwgZcFQSimAzG9PKf04pXQ3pXT3qlWreh7E7CybIC2eu2gjZ3Wh3AFg+3bsP8gOS+S53303sHZtoUJYAkK5e7PsrmGWJIndpXIX9WXqszED+k2S2ZnGVr2oWBKA3MgZ11fj7lA9YOdGFnPaEgbZJQyxgZlD7k5owOqw9BXo7LmnbBm+oWqrbsvzRdG3hqN0rdxfvPUJPIjLcdGWrDKJwHglbFHuIqu4iC2T+L/OksAS3b76wfQ0Rursxi2Tu1MP25O7wapWJiZcvR7VyweAGiotse7pkN7MWixCuectSoQtozVbyV0bafXcuZKXlXu1WcLoCJtnlkERQo0WGWLIY5iDK+reSB2k2iESF04xgTJI9EPuhwAcopTexX+/FYzsjxNC1gEA/3mivyG2h8hObfHcRbRMgR6hLcq9Ng4gpdy7UO0AYJic3GfYBWzI4+iB3EewgIXZWKn7PjLJ3dJ8OM1W5T5mNlLKXemYOt0OO3cwNu4nDBKQyLTROvkpLVZCQiDTc+cXV9OnzHOXlTu/yEtKTMKqCqhoRpE1jqfAgtu+9F8KZHICl+PhluxUgfEx2tKwQyTHdOu5C6XrNZWBkXu5zhJHEuTeCNlNTm42I4/PQkflXkOlJUs1W7mnWDwKhcwZc6Tc/VbPXWkldyG05ISkubCCsTHe4Uq0DeRfxWlQ6PBQQj0WTtxzz11NcKQ7e51N9EzulNJjAA4SQi7mD90IYC+AfwbwJv7YmwB8pa8RdoBIYJI9d9mWKULuCeW+YwcOYDNGywG7Nut1YO/e7sndYOTuzrI3NuSoli5tGUxNoYx51Obiyeg1FbYMT8HSkmFc4ntNukeTSUyBUjjEMAs7L2MXwGblMAsR7RGRDVJvHUuzCVAohXIVgBzlLm1o+amGD4oCGHBha8llg07iip4NX00o+0IQtYdyGrqMT5AW5d6pV2u+cmcbmawZ/IDIvcZq9Sc8dxESmmvLZCj3RiOh3KsYbVXuKXLXNV5oSy7GUlC526qXvHfMz8NR7FblLjx33pDDnanDhYWxcVH7PVmewFlglpQJN07UEqGQHbY4zkly5/hVAJ8jhDwAYBeADwL4AwAvIYQ8DuDF/PdFgyD3NWuiG3hCuRdpO5ZQ7tu3Yz+2YMskly0PPMAmWheRMgALwRykLVNBDfPzMcnl2TLpMK6I3HEGDUmpuE2pgUgP2HBJBf8Tv4c3bPy3lobJ3aAdubfr25mFzAxVI7640p47AFjEZU2f5TERPyr65ngqrG5vgiLmP0+5TzJypzVJufPkmK49d51VP/UCpWMqfCFMTaE8dxhAynNvkPbkzksSp22ZOYxBU0OMmM1iyl1ne1WJYiydyF0od8XL2FBtJfe0cp/bPwsg7ncrgjAi5T7v80r6Dpqhyjb/xYZqJ3IXtYoyVqaLjb4KDVNK7wOwO+NPN/bzvt1AJndNY3OvWgU8g9sypc7EY9tJcn8aCjaXTgEY62kzFYgnu1dlsy1RZ1tsDhTdpDMMlJUGagtxygAj99YJY+nZ5D6BGRxekGrOBCoMq/cJR9atxe/hfcDOm3p+D0Ai94zJ302WMdBBudd9NEMFWqpEq0Vc2Fo+uTeaWouy7whB7jnKfWJaQwgV86ddiD5NDae1HZyMPOVu6Kx2TsPX4ybs/WB6GiM+K8KVsGVcdLBlWO0b6riIdrm4ch8bacLQQlTd0VZyF8XcOAlGyr3ZjL+oIPe8EH7hucPN2FDNiHPniWJCuc8dmAOwHmOr2HUj7Dp2wyVRpJAJNiFdFyiJUMgOaQXie4l4/rOJcz5D9cQJtryemmK/j44K5c4OZhFyL5VYPonvA35pDI/gElw2eyfw3vcCn/wke/MuM3UMU2HKvcYmRILcr74a+NM/BV74wsLvVzFczEvp235AMntKWkaYS+5yKWAv1GB2yK5rizU8CKqPzVQgTjLLUu4RuReoDwTkeO7Ssjir/ratuCjpKXJX4uJVTrN4nH0EYcvkKfdV7DzOnIzfN6vXp4zcOHd+45tvmh37BRfC9DTKYKyeJPcOyt0moFDQXJAsLK7cxysBKqUgc0NVCHRBkobByV1S7oHbRAg1SuVvAa/pYNFGq+dOzXzlzldLc0eY/zS6mk0gYduIRi3ClrHA7hyui3hDdRmT+9K0CBkgjh9niXXCGRgd5Z77WHFyj8r+1lkddw8mrjj+LeAPvsD+8KY3dR1iZlgKU1RzPFN2RFq/qSrw67/e1fuVDQ81KQmEWQwZtowRwgljJnAclqSTyK4Dy/zslDrdFqtXA7t3Ay9+ce/vAUm5O61jade3MwuZyp2Te9Npsj6cRpIAp0abmFqf/ACdBPC4t9po6rAzygi0xbOexarYXXhh5p/HV7PPmz0TQuzZd0PuCeXOj9980+rLZouQQ+4NV8HaNiGhot6NW/Pi1hRCuVcoFITMc8+wZQhCqCqPc+dRZvClyDDRUjKPSG0bME3Y4Xyrcg8zyL3MRiiUe/UoI/exdSX+XZTouwAmGgs08twB/hWi1USHwmHW0nnuK4LchYgEmONRrXbXdkyQQqPB8pUA4MoHPgNc/pmexyWSluZrfAe+aLOHHFRsH/Mz8exmTbdzlLvUQqzRACziwaYNNOQN1VDrmF3XFqoK/PjHvb+eo5ByLxiF2Fm5qy3K/R9+vLXFaWANI7i6C3RYBePsI1x2GfD447l/Hl/Nzs/smXgsgty79dyFcq8HVn83a4HpaYyAkV1iQ9VTWVmFnP0VIaLceR9R2lKjgTlsxPg4BW1S7rnPJF7n8UxpQtiX0jVwW0ZK2BMlCowcgUUIMDkJy28l91rTallsEEOHIVk4cyfYRBvbyEwyaySl3BthG+XefrNdt4e2TM8QCUwCkS3D78rmSGdSlZX7Aw8wNXTxxe1f0wkiOkaQu9Flr9I0ylaAWjO+8rM2BwFWqzqAlojRtYkDGw00eFkCSkULwrNfYzqNiNwzlHsUzlogyxiILe5yOX5MM/nF5QS8m0/yc7ZvT84fgJfRDVTW6CS0YHdL7h0wPsnOg9xqr+G1NnKWkZuhKh2bgZD71BQM+DC0IGnLNNW29lSkducli4vHuY+NEVQqJDvOvUkSUV8iyky2ZWLl3mYeTEzA8qsxuVMKp+rBDfTWmna6nuiTKtdyBwCTC0Km3AGnAabc+UrZcRBvqLYbEwDdZte97w3JvWscP54s1BjZMoLcy51JNa3cd+7sL4sbiKN05hd449+R/t6wUg6xEJaiCDE/aCUqICYBMckZuTdgwYHnszR/EWJoFNyoXExEDakzNlSjFncFlfu2bcCttwKveU38WOR5CuVewLrQFebPi0gO2xzshSnIZrYq9en0RRhe9mtyo2Vkcu9nJSbAi4eNGH7SlvG1tisYIaIS5M7j3McnCEbHkG3L+AoMKdNaNwgCaAhdidxF17F2RDo5CcutRntncBzMhkyJt5A7bywuqqfOnWHfa2wNO7CiFLSohOk4nNx50TSh3H3oHQsTxp77sFlH18izZQS5F7FlZOV+//3AlVf2Py6RtFSr82p3BcogtEOZWwdiqZzXnDeT3Gk9KkPrulL42dL07U2grXIX9YEK5CoIvPa1yT2/hC1DtfxuPvKYlABeoMUNKgpu6BZFVNO9JpWV7aDcEyUV9OzHO6XCFx6coqCsOSnlrsHW2yh3Qe5SpcVIuU+pqIwqOcpdgaEklTuQ9Kgjcm9HpJOTyT6qtRor8YD4eEeIlDt7v7lZdtzEyi/9XUSkkDUWk3voNRFAK6Dcef9eb0juXWFhgf1bswbAoUPAy1+OUb3OPHeR1lzuXAJVkMH+/cCxY4Mid3ZSRYOCfor1AUBllHv4/ILzQi0zOsLiNyoRCZAm90ajuy5Vi41IuWeRe1TZs/d6KeLianoB21AtoNxZX1c17hs6YOUuSGRGarUnsoo7ee6mmdzbTyj3QazEVBWYnGxp2OEEett8g4gQpb2T5ryDeVQwPqVhdELNVu6pZDyxaSrXYomVexu6mpxM9lGdn48SqLLInSl3Tu5VghJptDRxEStHESlkjtvR+4ubj9FhbkbkPvTcu4MoPbB6NYDPfAa47TaM1o4w5e6y7ENSoFuHIPe7eCGFK67of2xig2ne4705+yizDQDlMfZ+tTPsQsizGKIYXe4XNuohLNpIkLvwGnM3qM4ios5HGZM/6l+aU+O8CGLlHnLl3pkARU3xSLn3XtE4E5oGVNQFzC5IG9++3vazBLm3RH5Ysi0zoAFOTaGMhUhIBAHgU73tCiaKQJGKcVXn2PPHJhRUxlV4MJO2DQS5x0Qu5qS8wR4r9w7kLvdRrdUics+yZSw4cHmMffWEgzGpJaKo8y/ERcNjfRKsSUYUriv1fm03Jkjk7g+Ve1eQE5jwFVblYDScge8D1QW1cE9JoZZ++EP2cyDKndtBNZ6m0i+5VybY+80fZ3KKkXvrhBEV8Jw5EaPLaoJkKfd+xzQIRA2p222oFsgyzoNmxcrJp1rH5goA7wYUarFyL14QsjDG9QXMOjFTO0H7FZ6mMcWe/rucgd2piFVhTE+jTGsRuYsEP5GWn4WI3OUyutzuGB+P569cQgNgZTDksglZ6fpiFd7Rc/fmAHDnp4MtM4IFfH3vFtz0Ig931HZhrBJ/N7PCLgyHfxdWX8iBOcHI3XGkMXUi95LYUG37tEXByiB39WQkuyu8XOnJmlm4M41Q7nv2sMKPfE+pL4gN1HkeGNa3cp9k71c7zq40P8xWoekEjAYndxHGlbBl+rA7BoXIlsnYcIrIvUCuQh7kZbGP4srdCyXP3R78cRo36nGrPdeFQ03oamt9fgFB7GnlLu/lGH1afxGmpzESxN2YRG/4SybyawAKcpdv0rNVXtd+DBgdY8ewVk0ef6+pJvI1sjKWo1DIdvtWUnvDIsr9j/Gb+PldD+Pwky4ex4XYLtW+E6WgHd4c3WlqsBQP5jg7+K4r2zIFyX0JlPs5Hee+YQPwS78EbH7wX9gDhGDUZeVKT9Usptz1Spt3YBDKzHEGY8kAsXIX5N635z7F3mD+FCPpPItBpFaLrk2NOsV6Sbk7Thyq3O8m7yAQKfcMco9smZy+okUgZwg2oUEroNwNLYAX6rFy78MWysOE5WC2ynfJ770XDizu7ed/V9NsnUfyZvPAVmLT0yg3ZyLP/XvfYz+fu/FA/thEnLus3GtsbOPjcR2wWi35Oj/srNyjfsHtVPLERCRg0uTekiis63ge7sTzfvr/Ab6P6gc+CvNrh+PvwpW7qLHv8Eghi9/AnHoY3cQ6KXeNh0J6XdaeGwTOaXLfvZv9w099iQUsqypG66yi3akFCyYWCsU0ytEVg7BkgJg4B6bcp5lqqJ1kE9ij2RmmgghFGFejQVtsGebVK4X6yy422ir3RvEs4zxEG6pOs1CJVoDFi/tURWOBHSexGhokxm0XB85wcv/3f0cD5Y6fk6ncZVtmUHso09Mou6d5oTqC730PuFR7DNOTbTZU+U1HRKkBwCzfMB4bixswVeeT3zGdjJeV0Rl57h2Uu7w6FbaMbYUw0wSsqmwp5PvAXXdh9IqtwGScyWaOsYPsNEKEIQtesI0AZpl77jUvVu4dLENi6NDgJ+qgnS0svXTrF7UacPvtwM03A2vWYHT+CADg5EKJKXel81eUPdWBkTsn84F57rzuxfwM31Cl2VXyInLnO/2iTVzCc+fNw7sJMVwsiBVOFrkv8CqYI5Xexxkti52gfas2+TUqhUf1aPWzGMp9fMTHTMDDZu64A87oGlgdbmKZyl16zcBu1lNTUZPsIADuvBO4Xvl+bl0ZMTYgSe5zC+xgj4/HtfJqCxnkLiXjCV9dtndi5d7m+EjkLiv3FktGwDCYv/KjHwHXXJP4k1a2oKIJt0GlyqQ03mid9+N9q077QaoKHT78s9+IaQWQ+ze+wUxkTu6VuUMAgFP1UmIXvh1kNTQwW0bU/EAZBGE3vR4yUV7LVgBRtEyOf5wO4xLkLqsaEbGwHGwZsazN6sRUrbLGGXal94MXbah2o9x11jBCrH6sPktHZGG83MQsHWPs+b3vwZne2DEqx7IylLuUxzEwcuclCObngYceAubmgOcF/9aW3MV8Tyj3OntwbEzqkraQJEMv0BLKPavQViFbJsNzn8EExnP62ELXgYcfZmnCz3lO8m+WBQsOHEeubxTGG601v1gEDwAQVl7B98/+Knnpr+5+8ZWvsCp8113HlPvMfgBAQFWYSrEtakVhF80gyg4ICCVTQwWG0uy7taUg9/m5AAjD3PrWQl04IgGD7/Tb42xAjhOHmRVJ8FpsxJ5kK+lWawSjqBYKZ82DagnlHhZW7oZG4VEjVu7l3m2hPIyPskJa4Q9/BMzOwplY2zEqJ0u5J2yZAZJ7GfMIQ4J//Vf20POC7xZT7tJ5nHPYg2NjUiOdRvIEeKGWact4si3DLQ3d6lK5k0mMT7Qh9zvvZP9PKXdB7q6bbKISJTEtNOM8mgKRXDqaQ+XeNXwf+NrXgFe+ksWKrVmD0bl408dUihtdpRKr99SvwhaQbZlBdMjRp8dgwsF8LZSKFmUo94jcQ1YbxVOZLTPNbg6NBuAtLB9bhugaDLjZyn2ekXs/u9HENKDDg+8G7Rs+SDB0Ch9aXP5gEZT7xFgICgXVr3wHANAYWdVRua9enSy1ASRrJw3sfEqVIW+7DVi/NsBWPJ1bwhiQyF1qCDPrWBhRWXJQZMt0IPdoQ1W6SYi50ZbcR0dhER4h1gBLYlIn29sys7PsrnPJJcm/iSQnJ0nuRoULJIncxZ5OO+jEXxLlvvTSrR9873vAzAyzZABmyyDeju+GVDdsAJ773MENTbZlzEG0P7MsVHCSRRv4PnxYmfWtY3IP4HkApdxzXzMKPMFtGfDNoGWg3KHrMOBlknttQUEFs/1tWOg68zxdCr9A5xyANYzwYKAxz5b5/dhCeRCKcva2H2J806bMphJpfOELreIjYcsMymaTyP2OO4DXXHMM5BiAXbtyXxKR+5k4rXXOszFmNADYsS3jJM9lOjAgK+9B2DJtVbKiwBq3gJmkLXPJeM7zxUS4+urMfTmLuHA9EpO7rYCMlGDAhbsQwFf4mAqslnQS9+Q9m1gGV3cfKJVYMZGXvpT9vmYNRrAAQigoJV2R6ne+M9hkFcFHCxjBqDo7kPcsK3XMLyigrocA5WxbRsToNsIoTttGA/ZaproaDcCj3JbpIzloYNA0Ru4Zi6zqgsqUuzHV+/vrOjQ0I7ugqHL3YMTKfXTw2V5RZcgHDwA/dz2cn5DWZJsU0qodSBbGG9j55D17Aaaan1e6l0WYtGk1GZH7TFyqd9YvYdxik1BVgZLqoOalyD1VRiPy3KVaLIVsGYBZjxK5z9Kx/GMqLtC0JSO+j+LDkcjdLhGgVGJefD2E+BpFdIdOgiUh96Vfl/eDa65hZQBFjdc1a0AAjPLmCt00gJ6aamspdg1x0ikG1NsSQEVroFZX4NfZbM/K2BO+oFOnCXK31o4D4OTO63YUKYe86IiUe+t3qS5onNz7IFfDgA4f9UbcDKLjS3SKECoW5thxskcHX2FtfIoR1QwmgOc/H05+H4y2kKuNDky5j49jhMTp+M+b/SrwjGfkttgD4uPqNoKout1ccwRjVrwkq2gNVN3k8sSjelK5Z4TGFiV3a4qNz3EAWq1hNqjk2zJiwDnkbikeHE8qQVFSANtmTbIbYbzJW2QlqDThB+cguRNCVELIvYSQr/LftxFC7iKEPEEI+RIh5OwlufPykKMmyxjohtwHDZmPBlJnG0BZdzHvaG3JXStb0ODDaUjkrgfQx0egogmnQSNfdFnYMu2Ue30A5M5tmbrLe3QWiAUXxauqsyEMuFBKAy4uA6lhB8aB669nTVV6+BjVNkDAz+eglLuioDzKqGF0lOIZe7+US4IChACmHrAm2ftZUMNsUMF4Kc7eGTUc1Pzkl0wn42VVUYzIvUNkijkV7yvV5kKEUPOVewdyN5UmXF+JbZkRNVLurhN2VcJjqWyZQdzqfw3APun3PwTwp5TSCwDMAHjrAD6jGDi5VzTGagPpKdkjEuQ+iPZnACq81V4U7ZI1saQwrkThq3KZNeyYD+KiRwUqZi46hHLP2HCqNvQlIXdRgGtujtXxHnjlMAATq9mHHB65GLj0UlYzvIePIaYRtX8bpM1WnmTH/LlXLECtzbaGC2bANGhM7mGIOTqKsVJ8164YHqrN5PKEKfeYyI1Sa8ZyRO4dVDKZmoRJ2Ebo7Bw7z21tmW3bsr0uAJbmw/HVFnI34cJp0HiTt5ByD6KevGcTfX0iIWQjgFcA+Bv+OwHwIgC38qd8CsCr+/mMrjAyAoyMYFRhy0JzQHZIL5D5yBxQJ5+y5WPeM2PlnqVkMmJ0bRsxuVf9iNyLNDJZdETKvZV0aw4n9342QxSFkbvHFKGW12RZgjh31RqztBajctjGHSauwP34Xe89eHo/6ZncYfIaShjsSkyQ+/NWPcoe6KDcAVaryIUJHDgQ9U8dL8er51HLRS1Iep8e1RNNRnSRlyDVYhFhhB2JlMe6Ow4wW2M3iVxb5qd+Crjllty3stQm3KYa77tU9Fi5u62NvdtBV+KevGcT/c6GPwPwWwBEAZcpALOUUnFGDwHY0OdndIc1azBarwIAzCVU7poGKAgQQh1MEwUAFZu12vMb7PtlqlDThIXTcFwS2zKc3C04aMzb8Ep8Gd9nd6iBIFLuyaskCIB5z0CFLCT75vUAjQRoNNlUL6TcBbnPK4um3NVVk/hH5RXYrT2A176W2dQ93UOMxVHuF2x08L8OfRRvLR9kIZAFEkBMW4FLbGD/Y6B11oVprByHJlcsHweD2LenlLXUk6tZCltGrsUibvxFyN2iDTiNMczMsyfnKvf3v7/9d9ECOK7GS2drjNy55+44peJjAqArIfzwHFLuhJBXAjhBKb27x9ffQgjZQwjZc/LkyV6H0Yq1a1EJZgEA5iDajvUBEYo5qFKs5RGK+dCOGhlkKneV1Z5OkPuIEil3ZyGIu1QtB1uGK/e0JykqEo6WfPSbAaaTZlQvvZDnzi/Y6oLGlPsikDsmJ3HBPX+Pz3xewz33MHLv6WMMI1buA7xZk1XT+B/KH2DNA9/KDRdMwzQJ3NI4sH8/GjMOfBgYH40FVsVqokrLjNXBbuAUSuL6EKuPpHJnn91RJfPiYY05D7MNFljQKQIpD5YewA20qHS2PaoDFitG6HrxaqKocveDs6/c+7mdXAfgVYSQpwF8EcyO+QiAcUKIWBFsBHA468WU0o9TSndTSnevWrWqj2GksGYNRv3TAAa3kdkrRJTMoMi9Uqao0XJkq+RtMLGdfoncSwQYGWG2zAKraKcggDYyqBqxfUBVmXJPkXuVLU4wOtL/OdRJE/WAXYVtW7VxiNjluQZrx7YoBd0B4Mor8dOvVvHe97Jf+yb3QW6QT08DJ0+y+gMFLBmA5QOd0DcCBw5g7jjzBOW8p9GRgNVa4oZ1VrvHeEM1fqwbW8aCA2e2gVnKUmJzbZkOMPUQThjXF7JGDRZLr3hwPCVS7oXIXQ3OLeVOKf1tSulGSulWAK8H8G1K6RsAfAfAz/CnvQnAV/oeZTdYswajDqs7vfTKnXvbA2pEXR4l8GFg4QTbU8gLfRMTMCL3shp77gsUnksZISyGIu0WhMAgPrxm8rtE5F7p/9jpSoB6wG5kbVu1cYi66FXHWDzlLuF97wM++EHgP/2nHl6sqrEtM2hybzaZvC5I7tdfD9xZewYaTx3D7ElGinJtl0opSLTai1L45eAD0VNX2oPxmwQEYW6t+wjCc5918ht1FIRlBHADHQ6vw2TxWu6myqJoPL+L0Fo1POeUex7+O4D/Rgh5AsyD/9tF+Ix8yOQ+IFLtFZFyH9A4Kjw8beYwSxTJV+5spz+T3BsUriD3fovMDwgGaeaT+1j/IWQ6CdAIBbkXUe5sLFXPWjTPXYaqAr/92z3WNeI3R2DANtuUlDhWkNxvugloBCb+/ciOWLlPxOd1tBLChQVvjk3MKOpL9tw5Wcolcv0m2xTvCKHcqz5mMQ5CaLuKCW1h6hQONeDM854CPH/E4uTelS2jhvDDc5TcKaXfpZS+kv//SUrp1ZTSCyilr6OUnt0y9WvWoALGDANrO9YjRCjmoOpslyfYzD9zlB3SvKQOS02FcY0a8YaqQ+B5YGpvuZC74sNLKRvR1KEy3v9FoSkB6iEj6E6JMEB8A5hv2rDhDK7g0CLBJD4UBFDtAZK7aEe2fTtQ0Da94QbA1Jq4jb4Us48xgSWStQCgwvfFa6e5LZMR0ivIPa3c9SIVXjm5N+abmMEERu1mka2CTFgmhROyLGUFAbRRFuVj6gEcX4uiXwptqKqsP8DZxrmdoZqFNWtY+ByWj3IfFIdWJhnJnDnBN1TzyF1rwvHjNnH2qB557o7LyP2cUe5T/W8S6kqIOtjFWUi5S3aXpS5Bl4UuYSjNwi0lC0OQe0HVDrAM7+dfMYdv4GWY+8kpAMDYZDxHhcUWkztfcUjTUFVZlJlcRdEPuiN3ZyFkYZiV3pMYLYvF7DcWQlhwQEY4uWsh3EAtbhUB0LVzWLkvK8jk3qZb+9mA2NAdVCnW8hRTn2dOty+kZGlNOIGGRp09zx7VY1vGVeC6rMb0clGkhtJsUe7VOTb20VX934B0JQDlU71j/W0kz5etLUFn4y4Rkfsgb9Zr17Kf117b1ctuemmAvbgMDz7CG3Wsjm84lTF27KOeBCIwIHXDZaGx8XnymmpkPbXFxEQc545xTIz1vudmmiySpyZyHXhtEssI4AQ6vKYCgxQr5a2rFD49+9fayib3JY70Exu6gyL3yjS7eGdmeYxtnnLXm3CaGhrzAQhCGGN2HC3jqvB8ApN4fYcYDgqGmkHuJ5n1NLq6f79bz2gG0XY8CeW+dCUsisJU/cEr961bWTntX/qlrl520+tYlMqXnmaKf2xVK7lXZ9j5iG2Z5Dxk6frx70y5F8hZ0XUmbDzCGnX06LcDgMWbx89WCdt34XV1TJ3CDTT4gZJo7N12WBqFHw7JvX9IZX+XukeoSF4aVEGn8mqmHs5UeUJOTi1pSw/gBKzZhI0GSHmExb+rTTR8Ru5Fu1SdDehKkEvulTX9V3PTpfIPWrtWbeL5krq39XPAllGDxbHZfuqnut5MvvQqC5uUQ3jC3woVTYxMxa8fHefKfYbNvagMRuo6TUdPdUOklgk0AoPZMpO9X/+mIPc5nsgmlLtJ4YY6vEApXFJc14bKfTAol7HRPAWCEGvHGp2fv4gQadViovSLyjq2I3VmgUd+5Cp3HqNba7IlJVcdthHAaWpwfTKQBiKDQkn1sNBMElPttIcSFqBNj/f9/poiRWMUsWVk5b7E4bRFYKqL4Ln3CEKAl03uAQCMYS7yqgGgMsEIrjrHjmkeuTPlniL3IsodgGUDDixmy0z37nNbvG/u3LyaVO4mhUMteE0VulJsTLrGmr+cbaw8cicE29c18DS24oYLMvOnzhpEcsag0sLLa9gEO+PwzcFS9majZYRwQgON+SAxMW2DKXrXV2Euo43CaX0OVb+UaNhRPeOzFVivWSgSZOXerS1jG8vnJpiH51YewgvxnWVB7gBw0wVPAADGMZtIABvlAQE1vp+ST+5BSrmrhZW7bRM4sJgtM937ZrzoajVb1xPhsGIhsxCYxZW7zhqun22sPHIHgDVrsBkH++q9OQiIUMxB2TIiLHDGZ2Sdu6FqUjjURGMhYMqd12axLTaeqld8Yp4NrDZnAbCESIHqTMj2TgZB7lp35K5Lx9U2lq4+UVH8+qZ/xCe0Xy5UIuBs4MZnzUJFE2OYS8QKVqbY9SgioSJyT10fhuIn6p/7oVJYJVsjKuooYR6VqCFKL7BK7LVzjglL8aJja/Kx1pol6EqxVZ2uAz6G5D4Y8NK/S61kjDGmWozJ/gpfCdg2CxM7g0kAbZS7yZpN1KpI2DJCdcy59sAaiAwCqwx2tSfIvUoHR+6qZMsUUu7xc6wlDqctBNNc8rkuY/yi1Xgx/hXb1QOJTXtB7jVeN0i00kuTu06SJXK9oLgFYpW1KDKqn6lj8mzfWW8EthovKYXFWgtsGAU323UNCKCJkjpnDcsjFm7QWC7kvoElf5gTg2nxRAhrtTcTslmbu6HKQ0Bn5kjSc+cr5Fm/BLO0fMh9tcXI/cSJ+LFqTWHkPr6j7/dPKPcCDY0Ttox1DpC7YSz5XE9gyxZ8Gf8BysQU5IrfWtmCjTpq87zEQETuqQ1VtZkokeuHalTKoxPkZua9lh4AeP12AC41EhFTwouvBiOF+zREWbcePatBHkPlvogQwQuDHEZZbWCeV1jOVe42m0Bn5rSkLcPJvdosDayByCCwymLRTTK51+qc3HvNH5cgh/MXUu5SjRZriXMlCsEwlk1CGgBgyxaU0IgIMoJto4IaqvPJJthG6pyklbsfqolw1nawx+KLrS9yl24SltSPweSW3XxgJ/Zy2iEi9/rZ3edameQuEjCWWrl30US3KCp6XM0ht3AYJ/eZeS2p3EfY893QWNIuVWmsLrF1esKWaegY1Z2B+MiJNm5FPHfpOUPl3gO2bGE/09U0LQujqKJW502w3ez2gIbahBcmlXtRf1vUgAH6tGVGssld3LBq4Ujha0icmkxy/8lPop6zg8bKJPdlotzFxw9SVJXN2P/Lq2sRkfuCkYyWKccXjLnE5ZBljJkOdOInbRnXRMUajNJJkHvOakdGQrnbyyPRqy3GxgaywhkYxseBSqWV3HWdKfeGaMjBm0ynlbuSrKLYjXK3JuLP7Eu5V+J5YhnxtWLyNoA1VIord56kJfowRKCUNR7/n/+z94G2wdBzX0QsinKXCK8TuXtB0paRl5pLXVRNBjF0rNJmcPIk62dJKavIODo+IHKX64UXiHOXfXm7dA6Q+wc+wBq+LhcQAmzeHCX+yKgoddQa7EYU2TItyj3Agi+TuwZdLZazIpN7X8q9El+0MrlbFTY35lGGoR0r9F655D4zwxodb9zY+0DbYGWS+1VXAa99baGmvouJxSD3si2l0ueQu7BfALCqhnzpICv35UTu0DSs0mZw4gQjd9cFfKoPpFEHwKIVov8XKBxGDB06PPgwopC4ZY3169m/5YS3vQ1ZVbVG1QUcctkFEdVzT5E7a24RXzQ+VQurZHs6buM3KOVuW5Jy532HKZTCzYByyf0wz8MZknsXKJeBW2/t/LxFxqIod97/lFWky/HcpY0sW29G4Wj2aDxhl7piZgK6jtXq6chzjypCjg7m7TXpJlioVpqmQYcPH8a5odyXI97xjsyHK1oDs47F+qeKTkwt5E7hSbVYvFAvTO7WNFulakqAUqn35MGEcpdsVVNqZagX7I0ckXvacz90iP3csDhtps8BWXLuYlE8dx4yL1qrZaGF3MX/pUiCZafclTOR5y5quQ+iUQcA6Dp7n6IlWkXTbgCtER9D9IWrSo/i6flVeNvbgDp3WlpsGS1I1D/3qVo4ustaxSLJJqxGX3XxROclILnvYo1K11BRcudWYItyF+Q+VO7nHhZFuY/yipBtCn8lyN2U/EJpwi6n4AroOlaTk63KfWIwxCrsK9bNp8CdVtNggEXwyFbWEP3jN9Z9HjNTO/D7H/8ZjJiXAGjd5NbVMKHcfaolchXaQczx8VX9TXA56saS9oXN0fjxwsqdk7vIyI1w+DBbVa9b1/tA22Co3BcRixLnzsumtiuklPALJXK3x+OJuZzCoqFpWEVOoVZj7TWrp3hFyMnBpGzr/PjrKFhyQdejtm7yJvQQ/UOxTXxw+9/iL/8SaHgqNPggRvI8G1qYqKLoUy2RZdwOIkBHriPfC8wxWblLheQk0i+6+o2Uu5O6Zg8dYsEfRdo59YAhuS8iFkW588p67QopJRIwpIqt9oSk3Je4HHICuo7VYJ7MyZNA9QiL+x1Eow4gboqtF2n4AACKEtkydmVI7gOFZQGNBt72NuBr77gN78P7WshN15KFtnzohVWymO/9Vq1QTLapDiRXwgnl3i25Z9gyF8z8CB/8YH9jzcOQ3BcRi+K58z6q7eqxJ5S7tKS0J+NflhW5axpWUUbuJ04A1eOsAfjoGrvdq4q/vd7ZykrDGCr3xYFtQzT3vemSp/EefLBllztTuXdJ7v1EygiYYCtIOfpMVvRGQcEdkbubtJZO7G/gJ+6mrIjRgaBncieEbCKEfIcQspcQ8jAh5Nf445OEkG8RQh7nP/uv/HSOYmqKJVgOYqIJiG5MbZW7tOkjk7s+PgIFvK/rgGrMDwRjY1i98BQAptxrogvT2sHMehGt0BW5c5Uvb0IPMQBw5Q4A8PlKqkW5I0nuPSj3QVxzFmHzMLESluLoi67IRZJW2pbZe5Bt/u7c2c8o89GPcm8C+A1K6U4AzwHwdkLITgDvBnA7pfRCALfz389LvOpVwAMPDHa/RPRRbVclL0HuIzGJk0qZZayitVjTkuLii7GqeQQAV+6n2HJ4dENlIG8vlFM35K6TJgy4UEr9t/kbQoJlRco9j9wNncIDm8OUAh7Mwv62EDMDKCYKk7Su3szxmNyLWuWZyn1hAXsXNgNYhuROKT1KKb2H/78GYB+ADQBuBvAp/rRPQS4Ld55BVYHLLhvse4q2c+1qbci+oC0n4fA+qsDgaswPBBdfnPTczzShogl7zWAC3SPlXrCyIMBqistNGoYYEGybZWY6ThvlTqP650EQP1YEpgm84hXADTf0P1SLl/qVbU7N0qBC9H4t9j4i1DNB7ocPYy92YtT2FivMfTCeOyFkK4CrANwFYA2l9Cj/0zEAa3JecwshZA8hZM9JuWLUEG1RnuK2TJtaG+qIFW0GJTYEy+WI3M3lRO6XXIIKajDUJlPusyEqqIFMDsbR60W5G4S3KEzXRxmiP/zUT7E7+CtewUgeaCV3ndU/DwMaEWJRlUwI8NWvAi9/ef9DtRRO7qNJFhdevN6PLXPoEPZiJ3Zu6y8evx36vsIJIWUA/wjg1ymlVflvlFIKIPOWSyn9OKV0N6V096pVq/odxnkDEefettmGZUX2S2JD0LZj5V5aRhuFU1MgU1NYbVWZcheNOga0WaGJaJmhcl96/Mf/CHzqU8C//RvwJ3/C2DiVWSYsGN8JogiTopEpg4TJ67inyV148UaBUhZAXKsoodwFuS+SJQP0Se6EEB2M2D9HKf0yf/g4IWQd//s6ACfyXj9E9xAZqm3TsSVyTyh3RYnUyKD6ug4Ml1yCVeQUTpwAavMEo8r8wOJ/hXLXSPFaNbrCWxQOyX3weOMbgS9/mZ3fjHMsHvIWfIncz+YAGUSTDjk/BABMhdlJRSPOIuXuxTeo04+dxnGsxc5nLt7KsJ9oGQLgbwHso5R+WPrTPwN4E///mwB8pffhDZFGhe8x6pvb7NKaZkzuqWgPm5O72UfdjUXBxRdjlXeYKfcFDaNafWBvLS6uomVjAWCHcQgX4IkhuS8WXvUq4DvfAT784ZY/RfXPG83IylgKcjd5vXY5cQmIyb1IETogXiUvSFN678OM6HfuWrxorH7W5tcB+AUADxJC7uOP/Q8AfwDg7wkhbwWwH8B/7GuEQyQQKfepNvW7FQWWiNFNk7vmA03AWG7kfsklWO0dwmPHAqChY9JwO7+mICJy78KW+ei63wedewSwhwvPRcO117J/KQjS9OpN+E2+Ga6f/egui9dlksMfAcBSfcAvrtw3XlLGFE7he/dX8Mv8sb1PMtGwmLZMz+ROKf0egLxvd2Ov7ztEe2gaE5OdlIyluECYQe66DzjLzHMHmHLHEzhxArCIiS0jg2tJFm2odkHuxNBBQIfKfQkgkv7m5wIQhe8xLUG6gWhokyZ3k68Ai/QGAAB19RReVvl/+MbD1yMMWe7L3qMTGFEb2LRpGdoyQywdyuXOk93iS0e55AAA2LxlmFy6dFngkkuwGidQd1QccycwWioe2dIJmimUexf14UXW5JDczzquvYBFz/3LN7UltWUsg9syk8lkOkvjoZBd5IrcdNVxnPTGcc8eNgf3zq3HpRPHB9FFMhdDcj8HUakUUO4iRje9pORdZYzlRu7btmGVcgYAMBuOYrQ8uDaAIlqhaE1w9mSdRXEUKgA/xCCx8yoTV+EefPaLakzuBf3tQcLiPQ9Egw4Bkwsko6ByB4CXvY7lbNz26ROA52GvdwF2bpgdzEBzMCT3cxDvfz/w9re3f46l+iAIYYwnVYeoErnsyF3XsXpdvA8wWhlc6Fu8odqlch/GuC8NrrsOP4/P4sf7Knh4H7fUloDczbIGC05LHLpomF3UlgGA1a94Nnbjx/j61ylmHzmGI9iAyy7I78kwCAzJ/RzEG97QOQPPUlkSDimPJB63Ld7arLz8aqas2h6XGxgdH9zU1O0eyX1oySwNpqfx+gvvgYIAn7yVRRAsBblvfuWV2Ly9NfDA1EV7wC7m6NatuKnyffzwqTX4/jdZr4CdVyzuqnBI7isUlt5MNMcWEGI0vdRcDli9czr6/6AadQCAbrPv2rUtMyT3JcP6F12CG9V/wzfv5OU2loDc3/VeE3ff33qdmCYj926UOwjBy685g5Aq+MhnWOb1zmePdHhRfxiS+wpFRXdRQQ0YSU4g0TLMqCynbh0Mq66IY/crU4NbWWgW99wLdvNhLxoq9yXF85+Pnw8+CUp5KOQSkLuut2gjAIDFyd2wuhMgV796PSZwBt98YB1s1LHl6szKLAPDkNxXKP7Hhf+Az+AXWsh90yoH45hpScxYDijvugAWL48wqEYdgLyh2oWPb5pYtELbQ3TG9dfjNfgn2CpP9V9G/QdEqKbeJblrL3geXoJvAQAuUR6DOtkmV2UAGJL7CsWOyRk8T/9RS1jNWz5yJR7/829BH11+m4XkkouxCiwMbnT14FSzIHetG3J/z3sysyeHOEvYtAmVrdO42bwNQJcWyCLD4iGQXeeKXHopXj7y7wCAnSMHsGgVwziWzxEbYrCwrMw1pbZ1I6Z/ZZkmDU9OYrXGwiFH1w3OjxQNmIuWjQUAPPvZwI3DXLwlxfXX4231D2ME89iwZnB5D/3CXD8FADCmuuw3oCh42fMWoMHHVWuOLMLIUh+36J8wxNJgfByYnFzqUXSNVRVWE2dQjToAQLN7IPchlh7Pfz5uwB2oYhTr1xTPLl5smBdsAgDo5e6tw3UvfQYewBV4+zV7Bj2sFgzJfaXid3+XVd47x7B6mm16jm4cTKMOoEflPsTS4/rrAQAK6LJKJhP77D2VRLj+elyKR2BtXj3QMWVhSO4rFevXA1dcsdSj6Bqrr2JtaSqrBue5E0PHM3E3Lls9bApzTuGii4DVnASXEblHG6q9RBNfdRXw+tcDr3zlQMeUheVzxIYYAsB//t0t2HTdgK9lVcXd0zcBLzxv2/memyCEqfd//MdlRe59KXdNA77whYGOJ/ejzsqnDDFEQezcuUhlUB944Jzcgzjv8fznM3JXl0+J6htuAF73OmC5N5AbkvsQ5wfWtWluMsTyxRveABw8CDzjGUs9kgi7dgF///dLPYrOGJL7EEMMsXwxNQV86ENLPYpzEsMN1SGGGGKIFYghuQ8xxBBDrEAMyX2IIYYYYgVi0cidEHITIeRRQsgThJBhDNoQQwwxxFnEopA7IUQF8OcAXg5gJ4CfJYQsYp/vIYYYYoghZCyWcr8awBOU0icppR6ALwK4eZE+a4ghhhhiiBQWi9w3ADgo/X6IPxaBEHILIWQPIWTPyZPDtPAhhhhiiEFiyTZUKaUfp5TuppTuXrXcU72GGGKIIc4xLFYS02EAm6TfN/LHMnH33XefIoTs7/GzpgGc6vG15zLOx+99Pn5n4Pz83ufjdwa6/95b8v5AKB18GVRCiAbgMQA3gpH6jwH8HKX04UX4rD2U0t2Dft/ljvPxe5+P3xk4P7/3+fidgcF+70VR7pTSJiHkHQC+AUAF8InFIPYhhhhiiCGysWi1ZSil/wLgXxbr/YcYYoghhsjHSshQ/fhSD2CJcD5+7/PxOwPn5/c+H78zMMDvvSie+xBDDDHEEEuLlaDchxhiiCGGSGFI7kMMMcQQKxDnNLmfD8XJCCGbCCHfIYTsJYQ8TAj5Nf74JCHkW4SQx/nPiaUe62KAEKISQu4lhHyV/76NEHIXP+dfIoT00sly2YIQMk4IuZUQ8gghZB8h5Nrz4VwTQv4rn98PEUK+QAixVuK5JoR8ghByghDykPRY5vklDB/l3/8BQsgzu/msc5bcz6PiZE0Av0Ep3QngOQDezr/nuwHcTim9EMDt/PeViF8DsE/6/Q8B/Cml9AIAMwDeuiSjWjx8BMBtlNJLAFwJ9t1X9LkmhGwA8E4Auymll4OFT78eK/NcfxLATanH8s7vywFcyP/dAuAvu/mgc5bccZ4UJ6OUHqWU3sP/XwO72DeAfddP8ad9CsCrl2SAiwhCyEYArwDwN/x3AuBFAG7lT1lR35sQMgbg+QD+FgAopR6ldBbnwbkGC8u2eQJkCcBRrMBzTSm9A8CZ1MN55/dmAJ+mDD8EME4IKdwM+Fwm947FyVYaCCFbAVwF4C4AayilR/mfjgFYs1TjWkT8GYDfAhDy36cAzFJKm/z3lXbOtwE4CeDvuBX1N4SQEazwc00pPQzgjwEcACP1OQB3Y2Wfaxl557cvjjuXyf28AiGkDOAfAfw6pbQq/42yeNYVFdNKCHklgBOU0ruXeixnERqAZwL4S0rpVQAWkLJgVui5ngBTqdsArAcwglbr4rzAIM/vuUzuXRUnO5dBCNHBiP1zlNIv84ePiyUa/3liqca3SLgOwKsIIU+DWW4vAvOjx/nSHVh55/wQgEOU0rv477eCkf1KP9cvBvAUpfQkpdQH8GWw87+Sz7WMvPPbF8edy+T+YwAX8h11A2wD5p+XeEwDB/eZ/xbAPkrph6U//TOAN/H/vwnAV8722BYTlNLfppRupJRuBTu336aUvgHAdwD8DH/aivrelNJjAA4SQi7mD90IYC9W+LkGs2OeQwgp8fkuvveKPdcp5J3ffwbwRh418xwAc5J90xmU0nP2H4CfAqs++RMA71nq8SzSd3we2DLtAQD38X8/BeY/3w7gcQD/CmByqce6iMfgBQC+yv+/HcCPADwB4B8AmEs9vgF/110A9vDz/X8BTJwP5xrA7wF4BMBDAD4DwFyJ5xrAF8D2FXywldpb884vAAIWEfgTAA+CRRMV/qxh+YEhhhhiiBWIc9mWGWKIIYYYIgdDch9iiCGGWIEYkvsQQwwxxArEkNyHGGKIIVYghuQ+xBBDDLECMST3IYYYYogViCG5DzHEEEOsQPz/ZMIP+miAk+IAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Plot true and predicted RUL values\n",
    "plt.plot(true_rul, label = \"True RUL\", color = \"red\")\n",
    "plt.plot(preds_for_last_example, label = \"Pred RUL\", color = \"blue\")\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "It is very likely that readers may get sligtly different results while running this notebook on their system. This happens because of the nondeterministic nature of some deep learning operations and dependence of libraries like `Tensorflow` on computer architecture. Therefore, to make our results reproducible, we also share saved models of all our notebooks. All saved models can be found [here](https://github.com/biswajitsahoo1111/rul_codes_open/tree/master/saved_models/cmapss). A notebook describing the procedure to use the saved models can be found [here](https://github.com/biswajitsahoo1111/rul_codes_open/blob/master/notebooks/cmapss_notebooks/CMAPSS_using_saved_model_deep_learning.ipynb). As a final note remember that hyperparameter tuning is more of an art than science. It is possible to obtain better results than what has been obtained here by choosing better set of hyperparameters.\n",
    "\n",
    "For other reproducible results on RUL, interested readers can visit my [project page](https://biswajitsahoo1111.github.io/rul_codes_open). "
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "tf_cpu_23",
   "language": "python",
   "name": "tf_cpu_23"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
